如某些语言(如PHP和Python)使用dynamic name resolution?
我曾经想过使用它的唯一一次就是做这样的Python代码,以免我明确地将参数转移到format
:
"{a} {b} {c} {d}".format(**locals())
但实际上并没有多少工作要明确(而且容易出错):
"{a} {b} {c} {d}".format(a=a, b=b, c=c, d=d)
为了设置/获取同一范围内的本地人,我不明白为什么有人会使用它而不是地图。
如果没有动态名称解析,就会捕获拼写错误,并且您可以自动重命名变量而不会破坏程序(除非某些内容仍然可以读取变量的名称)。通过动态名称解析,您可以获得一些可以省去键入内容的内容吗?我错过了什么吗?
Python文档说他们将来可能会将其删除。这更像是历史事物吗?什么是动态名称解析的实际好用例?
答案 0 :(得分:1)
大多数动态类型语言根本没有选择。对于像x.y
这样的表达式,您无法静态查找y
,因为可用的字段取决于x
的类型,该类型仅在运行时可用。
有很多方法(例如类型推断或JIT),但由于基本语言具有以进行动态名称查找,因此大多数此类语言都将其作为一种功能(参见例如Lua表)。