我有一个关于swift函数调用语法的基本问题。我已阅读文档,但无法弄清楚。所以决定在这里提出一个问题。
我写的一段代码
var string1 = NSString().stringByAppendingString("First string")
var string2 = NSString.stringByAppendingString("Second string")
println(string1)
println(string2)
两个字符串都有相同的函数调用但返回类型不同。这里唯一的区别是()
。我得出像
第一个字符串
(功能)
问题是它没有发出警告/错误的原因。是var string2
是否拥有stringByAppendingString
的方法体?什么事情发生,像我这样的新快速开发人员可以很容易地犯这种类型的拼写错误而无法弄明白。
你能解释为什么它没有返回价值吗?
答案 0 :(得分:6)
这是因为快速方法是curry函数(你可以在Ole Begemann's post中找到详细的解释)。
那么你真正得到的是以下几行:
var string2 = NSString.stringByAppendingString("Second string")
是一个函数,它将一个字符串作为参数并返回
的结果"Second string".stringByAppendingString(parameter)
您可以通过调用string2作为普通函数来检查:
string2("123")
// Prints: "Second string123"