Swiftの関数の引数のアンダーバー。 [プログラミング]
Swiftをやる時にいつも忘れているんだけど、わりとすぐに思い出せないので書いておく。
Swiftの関数で引数のところにアンダーバーが出てくるのが気になる。
例えば上のだと関数のところにsenderという引数があって、その型はNSDraggingInfoだということだけども、アンダーバーはなんだということになる。
答えはObjective-Cにあって、メソッドの引数に名前をつける習慣があって、C言語みたいに関数でやっている分には引数の順番で判別するのだが、クラスの中のメソッドの引数はキーバリューみたいに一揃えにしていかなければならない。だからそれを省略して書く時にアンダーバーが必要になってくる。
Objective-CのCocoaに対応するためにSwiftでも引数が順番だけじゃなくて名前で判別する仕組みを取っているというわけだ。引数が一つだけだとかは面倒だから省略するのが普通なわけだが、なんかいちいち省略しますよと宣言するというのが気持ち悪いがしょうがない。
なんでこんな事を毎回やっているのかというと、この事実を明示的に書いているところがあまりないからだ。Swiftをやっている人は大体Objective-Cのことを知っているし、僕みたいにいきなり思い立ってやり直すという人が少ないというのもあると思う。そもそも_で検索しても情報がなかなか出てこないしね。文法とかはやっぱり本とかがあったほうがいいに越したことはない。Swiftは一冊買ってあるからいいとして、Golangって持ってないんだよな。
これあたり欲しい。翻訳本で高いがな。
Swift本はこれを持っている。簡単すぎないから大体のことはよく読めば載っている。あまり親切とは言えないが、少なくともググってすぐ出てくる情報ばかりではない。
それにしてもguard文は必ずしも必要な感じはしないなぁ。便利は便利だけれど、他の言語であまり見慣れないものを見ると一瞬ムムムと感じてしまう。まぁ書いてあることを読める程度にはなっているけれども…。Swiftはコンパイラで検知できるバグは文法的に取っていく方針にあるみたいなので、ある程度書き方を強制されるところはあるかも。
Swiftの関数で引数のところにアンダーバーが出てくるのが気になる。
override func draggingExited(_ sender: NSDraggingInfo?) {
例えば上のだと関数のところにsenderという引数があって、その型はNSDraggingInfoだということだけども、アンダーバーはなんだということになる。
答えはObjective-Cにあって、メソッドの引数に名前をつける習慣があって、C言語みたいに関数でやっている分には引数の順番で判別するのだが、クラスの中のメソッドの引数はキーバリューみたいに一揃えにしていかなければならない。だからそれを省略して書く時にアンダーバーが必要になってくる。
Objective-CのCocoaに対応するためにSwiftでも引数が順番だけじゃなくて名前で判別する仕組みを取っているというわけだ。引数が一つだけだとかは面倒だから省略するのが普通なわけだが、なんかいちいち省略しますよと宣言するというのが気持ち悪いがしょうがない。
なんでこんな事を毎回やっているのかというと、この事実を明示的に書いているところがあまりないからだ。Swiftをやっている人は大体Objective-Cのことを知っているし、僕みたいにいきなり思い立ってやり直すという人が少ないというのもあると思う。そもそも_で検索しても情報がなかなか出てこないしね。文法とかはやっぱり本とかがあったほうがいいに越したことはない。Swiftは一冊買ってあるからいいとして、Golangって持ってないんだよな。
これあたり欲しい。翻訳本で高いがな。
プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)
- 作者: Alan A.A. Donovan
- 出版社/メーカー: 丸善出版
- 発売日: 2016/06/20
- メディア: 単行本(ソフトカバー)
Swift本はこれを持っている。簡単すぎないから大体のことはよく読めば載っている。あまり親切とは言えないが、少なくともググってすぐ出てくる情報ばかりではない。
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
- 作者: 石川 洋資
- 出版社/メーカー: 技術評論社
- 発売日: 2018/01/17
- メディア: 単行本(ソフトカバー)
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus
- 出版社/メーカー: 技術評論社
- 発売日: 2018/11/14
- メディア: Kindle版
それにしてもguard文は必ずしも必要な感じはしないなぁ。便利は便利だけれど、他の言語であまり見慣れないものを見ると一瞬ムムムと感じてしまう。まぁ書いてあることを読める程度にはなっているけれども…。Swiftはコンパイラで検知できるバグは文法的に取っていく方針にあるみたいなので、ある程度書き方を強制されるところはあるかも。
タグ:SWIFT
コメント 0