【发布时间】:2014-07-24 04:55:53
【问题描述】:
这是 Swift 中的一个函数
func flexStrings2 (s1 : String = "", s2 :String = "") -> String {
return s1 + s2 == "" ? "none" : s1 + s2
}
flexStrings2() // returns "none"
flexStrings2(s1: "Hello!") // returns "Hello!"
flexStrings2(s1: "What's ", s2: "up?") // returns "What's up?"
flexStrings2(s1: "", s2: "") // returns "none"
我正在尝试在 Swift 中编写一个名为 flexStrings2() 的函数,它满足以下要求:
- 该函数可以精确地采用 0、1 或 2 个字符串参数。
- 以字符串形式返回函数参数。
- 如果没有参数传递给函数,它将返回字符串“none”。
- 函数体只使用一行代码
我希望 flexStrings2(s1: "", s2: "") 返回 "" 而不是 "none"
这可以在函数体的一行代码中完成吗?
这是一个丑陋的解决方案:
func flexStrings2 (s : String...) ->String{
return s.count == 0 ? "none" : s.count > 2 ? "Maximum 2 parameters" : s.reduce("", combine: {$0 + $1})
}
另外它不符合调用 flexStrings2 的语法。
那么有没有办法知道一个参数(带有默认值)是否已经传递给 Swift 中的函数?
【问题讨论】: