动态名称解析

时间:2011-01-25 01:43:49

标签: language-design

如某些语言(如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文档说他们将来可能会将其删除。这更像是历史事物吗?什么是动态名称解析的实际好用例?

1 个答案:

答案 0 :(得分:1)

大多数动态类型语言根本没有选择。对于像x.y这样的表达式,您无法静态查找y,因为可用的字段取决于x的类型,该类型仅在运行时可用。

有很多方法(例如类型推断或JIT),但由于基本语言具有以进行动态名称查找,因此大多数此类语言都将其作为一种功能(参见例如Lua表)。