这个有没有语法存在?在任何语言中?

2024-09-26 22:12:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在我看来,在动态类型语言中有一个参数是相当常见的,它要么是一个对象,要么是查找该对象的键。例如,当我使用数据库时,我可能会使用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中的隐式和显式关键字,它们允许您定义类型之间的转换。在


Tags: or对象方法语言id数据库类型参数
3条回答

你在找function overloading? 例如:

doSomething(Person p);
// these could do lookup and dispatch to doSomething(Person p)...
doSomething(String personName);
doSomething(Integer personId);

任何OO强类型语言都应该能够做到这一点。在

对于动态类型语言,尽管我不知道除了手动执行某种类型检查(instanceof)操作之外,没有其他方法,而且这种方法非常快就会变得令人讨厌。你最好只做我们在OOP之前做的事情:使用不同名称的函数,例如:

^{pr2}$

如果您的代码结构良好,否则,这些“重复”函数中的大多数将非常小。在

我以学习编程语言为生。我从来没有见过一种语言为该操作内置语法。我甚至不确定您希望这样的语法是什么样子,特别是因为您可以为这些模式中的任何一个定义函数。在

喜欢可扩展语法的人倾向于定义Lisp宏:-)

Scheme,LISP,或者任何一种带有宏的语言

相关问题 更多 >

    热门问题