在我看来,在动态类型语言中有一个参数是相当常见的,它要么是一个对象,要么是查找该对象的键。例如,当我使用数据库时,我可能会使用getMyRelatedStuff(person)方法
我真正需要查找的只是此人的id,这样我的方法在python中可以如下所示:
def getMyRelatedStuff(person_or_id):
id = person_or_id.id if isinstance(person,User) else person_or_id
#do some lookup
或者换个方向:
^{pr2}$编辑:我正在寻找一个内置的语法,我能想到的最接近的是C中的隐式和显式关键字,它们允许您定义类型之间的转换。在
你在找function overloading? 例如:
任何OO强类型语言都应该能够做到这一点。在
对于动态类型语言,尽管我不知道除了手动执行某种类型检查(instanceof)操作之外,没有其他方法,而且这种方法非常快就会变得令人讨厌。你最好只做我们在OOP之前做的事情:使用不同名称的函数,例如:
^{pr2}$如果您的代码结构良好,否则,这些“重复”函数中的大多数将非常小。在
我以学习编程语言为生。我从来没有见过一种语言为该操作内置语法。我甚至不确定您希望这样的语法是什么样子,特别是因为您可以为这些模式中的任何一个定义函数。在
喜欢可扩展语法的人倾向于定义Lisp宏:-)
Scheme,LISP,或者任何一种带有宏的语言
相关问题 更多 >
编程相关推荐