Dav*_*415 9 python functional-programming r
我试图找到正确的语言来描述以下概念.也许有人可以帮助我.
这是关于编程的一般问题,但我将使用Python和R作为示例.
在Python中,我们可以在这样的字典中放置一些东西
myData = {}
myData["myField"] = 14
Run Code Online (Sandbox Code Playgroud)
在R中,例如,使用data.table包,我们可以写类似的东西
data = data.table(x = c(1, 2, 3))
data[,myField: = x^2]
Run Code Online (Sandbox Code Playgroud)
这些做了不同的事情,但比较了每个人的第二行.在Python中,它"myField"是一个字符串.在R data.table示例中,没有字符串.R示例有点好,因为它可以节省您的输入,但如果您想编写myField一个变量的程序,它会给您带来麻烦.在Python中,这是微不足道的,因为你可以做到
myData[myVariable] = 14
Run Code Online (Sandbox Code Playgroud)
与myVariable被定义为另一个字符串.在R中,你也可以这样做,但必须使用不同的语法,这意味着你必须知道两种完全不同的语法编程方式.
我的问题:这叫什么?我知道它与范围规则有关(也许是元编程?),但无法找到适合它的语言.任何人?
我相信这种编程语言“功能”被称为“裸字符串”。
PHP 也对此提供(已弃用)支持:为什么 $foo[bar] 错误?
它被广泛认为是一个非常糟糕的想法,因为存在与变量或常量名称重叠的风险,并且在生产代码中绝对应该避免。然而,JavaScript 在避免这些问题的想法上有一个有趣的转变:
var obj = { key: "value" };
Run Code Online (Sandbox Code Playgroud)
您可以在不使用引号的情况下定义内联对象上的键。这是可行的,因为你不能以其他方式做到这一点 - 键被解析为字符串,而不是变量名。我发现在仅使用字典中预定义键的程序中,这是一个非常有用的权衡。作为参考,Python 版本需要引号,但允许您使用变量,如您所演示的:
obj = { "key": "value", key_var: "value" }
Run Code Online (Sandbox Code Playgroud)