以下代码正确打印true或false,具体取决于字符串是否包含元音。这是使用匿名函数,闭包,捕获变量等的简写格式。
let s = "hello"
println(contains(s,{contains("aeiou",$0)}))
我正在尝试将其解析为具有显式参数的单独命名函数
let s = "hello"
func myFunction(c: Character)->Bool {
return contains(s,c)
}
println(contains(s,myFunction(???))
适当的函数定义和后续调用是什么?
答案 0 :(得分:0)
我认为@stklieme没有解决OP的问题,因为代码以相反的顺序传递params。使用外部函数调用匿名闭包需要您在闭包中命名参数,如下所示:
let s = "hello"
//println(contains(s, {contains("aeiou",$0)}))
func myFunction(c: Character) -> Bool {
return contains("aeiou", c)
}
println(contains(s, { (c: Character) -> Bool in return myFunction(c) }))
答案 1 :(得分:-1)
您可以使用传递两个参数的“传统”函数
func myFunction(c: Character, string : String) -> Bool
{
return contains(s,c)
}
println(myFunction("f", "Hello")) // false
或可以捕获字符串参数的闭包
let s = "hello"
var myClosureFunction = { (c: Character) -> Bool in
return contains(s,c)
}
println(myClosureFunction("o")) // true