【发布时间】:2019-02-05 03:55:58
【问题描述】:
我在another question 上看到了一些代码,它似乎用一些不寻常的语法创建了一个匿名函数(闭包表达式):
let plus: (Int, Int) -> Int = (+)
我理解左边——它声明了一个(Int, Int) -> Int 类型的常量(一个接受两个整数并返回一个整数的函数)。但是(+) 是什么?它如何声明一个没有大括号的函数,以及在没有任何类型的参数标签时它如何引用两个参数?
该函数接受两个参数,将它们相加,然后返回结果。如果我将+ 操作符替换为不同的操作符(比如*),操作就会改变。那么它是{$0 + $1} 的某种简写形式吗?如果是这样,这个速记背后的逻辑是什么?
【问题讨论】:
-
我什至不确定是否应该在 Stackoverflow 上提出“解释原因”问题。
-
@kelin,大多数问题都是“解释为什么这不起作用”或“解释我如何才能做到这一点”的性质。虽然这可能会解决一个紧迫的需求,但更大的好处是知识被添加到工具箱中——使一个人成为更好的程序员并且可以一次又一次地使用的知识。这就是我问这个问题的原因——因为我在你的代码中看到了一些我认为我可以从中学习并可能在未来使用的东西。
标签: swift lambda anonymous-function shorthand