是否存在这种语法?在任何语言?

Mic*_*ael 0 python syntax programming-languages default

对于我来说,使用动态类型语言(对象或查找该对象的键)的参数似乎很常见.例如,当我使用数据库时,我可能有一个方法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
Run Code Online (Sandbox Code Playgroud)

或者走另一个方向:

def someFileStuff(file_or_name):
    file = file_or_name if hasattr(file,'write') else open(file_or_name)
Run Code Online (Sandbox Code Playgroud)

编辑:我正在寻找一个内置的语法,我能想到的最接近的是C#中的隐式和显式关键字,允许您定义类型之间的强制转换.

Nor*_*sey 9

我以编程语言为生.我从未见过具有该操作的内置语法的语言.我甚至不确定你想要这样的语法,特别是因为你可以为任何这些模式定义一个函数.

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

  • @inspector,@ wRAR,@ Michael:如果if-then-else的表达形式是迈克尔正在寻找的,那么它确实在C,C++,Haskell,Icon,Lisp,ML,Scheme,Smalltalk,并且可能是一大堆别人,我无法想到我的头脑.我认为迈克尔正在寻找一些更具体的语法,因为"如果我是你正在寻找的对象,请回复我,否则就把这条消息发给我." (2认同)