Swiftの関数の呼び出しに関して質問です。
質問内容はcheckPocket("どこでもドア")で関数を呼び出していて、 関数はfunc checkPocket() -> (String) -> Stringとなっています。
構文Aのように引数は(intValue: Int)の様に()の中に書くものだと思っているのですが何故 構文Bは()の外に出ているのでしょうか?
また、 -> (String) -> String の様に戻り値が二つあるのはなぜでしょうか?
構文A:
func method(intValue: Int) -> Bool {
return true
}
method(1)
構文B
参考:http://dev.eyewhale.com/archives/1217
class Doraemon {
var poket = Dictionary<String,AnyObject>() init(){ poket["タケコプター"] = "Takekoputer 9-inch,Late 2013" } // 引数にstringを受け取り、stringを返すクロージャを生成・返却する func checkPocket() -> (String) -> String { return { // キャプチャリストは [参照方式 対象,参照方式 対象 ・・・] という形で記述する // この例では self を unowned で参照 [unowned self] (itemname:String) -> String in if self.poket[itemname] { return "(itemname)は持ってるよ。僕ドラえもん。" } else { return "(itemname)は今修理中。" } } }
}
let dora = Doraemon()
let checkPocket = dora.checkPocket()
NSLog(checkPocket("どこでもドア"))
NSLog(checkPocket("タケコプター"))
// どこでもドアは今修理中。
// タケコプターは持ってるよ。僕ドラえもん。
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。