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

Groovy 传递参数的parmname:value语法的起源是什么?,groovy,swift3,smalltalk,Groovy,Swift3,Smalltalk,去年夏天我学习了groovy,发现了构造函数的语法,可以用一个值指定参数名并初始化该值。例如: Team team = new Team(name: "Bengals") 年底,我升级了IntelliJ,这种语法开始出现在我的java函数中,带有不同参数列表的重载函数。(这并没有很好地实现。当我尝试更改值时,会让人感到困惑。我已经找到了答案,但实现得很差。) 这很有趣,因为我正在学习Swift 3,它使用相同的语法 斯威夫特3似乎不太可能受到Groovy的影响,所以我很好奇。什么语言对这些语言

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

Team team = new Team(name: "Bengals")
年底,我升级了IntelliJ,这种语法开始出现在我的java函数中,带有不同参数列表的重载函数。(这并没有很好地实现。当我尝试更改值时,会让人感到困惑。我已经找到了答案,但实现得很差。)

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

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


在我看来,Swift是建立在我对Smalltalk所知甚少的基础上的。Smalltalk是否支持此参数语法?

我不知道Swift和Groovy,因此只能对Smalltalk部分进行响应

Smalltalk不支持这种语法,但有读起来非常类似的关键字消息

比如说,

team := Team new name: 'Bengals'.
team chant msg: 'who dey?'
在Smalltalk中有效


不是命令中有参数的名称,而是命令本身是#name:,它与某个实例变量的名称匹配,但是设置其值的方法。。。正如我所说,它读起来是一样的,但含义却大不相同。

列出了许多支持命名参数的语言:Ada、C#4.0+、Ceylon、ColdFusion标记语言(CFML)、Common Lisp、Fortran、IDL、Kotlin、Mathematica、Objective-C、PL/SQL、Python、R、Ruby、Scala、Smalltalk、Swift、,和VisualBasic.examples here:和here:有趣的…也是新添加到C#中的。可以看到Objective-C喂食斯威夫特和C#两者。也许这就是压力。
team := Team new name: 'Bengals'.
team chant msg: 'who dey?'