- Swift part2
685 :デフォルトの名無しさん[sage]:2014/07/11(金) 02:23:59.31 ID:MKluaUW0 - 前スレ609でイニシャライザ(コンストラクタ)とメソッドと関数で呼び方違うのがきもいって書いたけど、
定義するときの書き方が違うだけで一応どの書き方でも書けるんだな ・イニシャライザ init(message: String, to: String) {...} // 全部キーワードつける init(_ message: String, to: String) {...} // 最初だけキーワードつけない init(_ message: String, _ to: String) {...} // 全部キーワードつけない ・メソッド func say(message msg: String, to: String) {...} // 全部キーワードつける func sayMessage(message: String, to: String) {...} // 最初だけキーワードつけない func sayMessageTo(message: String, _ to: String) {...} // 全部キーワードつけない ・関数 func print(message msg: String, to target: String) {...} // 全部キーワードつける func printMessage(message: String, to target: String) {...} // 最初だけキーワードつけない func printMessageTo(message: String, to: String) {...} // 全部キーワードつけない
| - Swift part2
690 :デフォルトの名無しさん[sage]:2014/07/11(金) 11:08:18.34 ID:MKluaUW0 - >>685で全部キーワードつけられることがわかったので、
そのときのObjCとSwiftのブリッジングってどうなってるんだろう?と思って試してみたら Swift→ObjCは init(message: String, to: String) → initWithMessage: to: init(_ message: String, to: String) → init: to: init(_ message: String, _ to: String) → init: : ・メソッド func say(message msg: String, to: String) → sayWithMessage: to: func say(message: String, to: String) → say: to: func say(message: String, _ to: String) → say: : ObjC→Swiftは initWithA: b: → init(a: 〜, b: 〜) みたいにメソッド名が自動変換されるんだな じゃぁ func say(message msg: String, to: String) の他に func sayWithMessage(message: String, to: String) とか、 initWithA: B: の他に initA: B: とかがあったら同じ名前になって競合するんじゃねーの?と思ったら、片方が無かったことにされた・・・ まぁ、実際そんな名前ついたイニシャライザやメソッドがあるなんてことは無いだろうし、問題は起きないんだろうけど
|
|