传递参数的parmname:value语法的来源是什么?

时间:2017-01-09 14:35:22

标签: groovy swift3 smalltalk

我去年夏天学会了groovy并发现了构造函数的语法,您可以使用值指定参数名称并初始化该值。例如:

Team team = new Team(name: "Bengals")

在今年年底,我升级了IntelliJ,这个语法开始出现在我的java函数中,带有不同参数列表的重载函数。 (这个实现得不是很好。当我尝试更改值时,这很令人困惑。我已经弄明白了,但执行得不好。)

team.chant = (msg: "Who dey?");

这很有趣,因为我正在学习Swift 3并使用相同的语法。

Swift 3似乎不太可能受到Groovy的影响,所以我很好奇。什么语言对这些语言施加压力以支持parmname:value语法?

在我看来,Swift基于我对Smalltalk的了解。 Smalltalk是否支持此参数语法?

1 个答案:

答案 0 :(得分:2)

我不知道Swift也不知道Groovy,所以我只能回答Smalltalk部分。

Smalltalk不支持该语法,但其关键字消息非常类似。

例如,

team := Team new name: 'Bengals'.
team chant msg: 'who dey?'

在Smalltalk中有效。

这不是params的名字在命令中,而是命令本身是#name :,它匹配某个实例变量的名称,但是是一个设置其值的方法......正如我所说,它阅读相同但意义却截然不同。