- Go language part 1
568 :デフォルトの名無しさん[sage]:2016/06/02(木) 10:03:29.88 ID:sFcAoyCt - func later() func(string) string {
... return func(g string) string { ... } } ごめん、このクロージャの最初の部分のlater() func(string) stringってどういう意味? 関数名がlater 戻り値がstringは分かるけど、func(string)がなんでこんな場所に書かれてるのかな、と
|
- Go language part 1
570 :デフォルトの名無しさん[sage]:2016/06/02(木) 12:02:45.10 ID:sFcAoyCt - う〜ん、難しい...
|
- Go language part 1
572 :デフォルトの名無しさん[sage]:2016/06/02(木) 15:52:21.01 ID:sFcAoyCt - >>569
あぁ、なるほど ようやく今理解した func later() [func(string) string] { []は見やすいようにわざと書いたけど、こういう事だね 関数laterは引数は取らずに、 返り値として「stringを引数に取り、stringを返り値として返す」
|
- Go language part 1
573 :デフォルトの名無しさん[sage]:2016/06/02(木) 16:09:51.23 ID:sFcAoyCt - あれ、ちょっと待って
https://ideone.com/i9EfQl later()は引数取らないけれど、 f := later() f("apple") どっからstoreに"apple"なんか文字列引数が渡されてるの? こういう型の場合、ローカル変数(ここではstore)にコンストラクタのような働きが起って自動的に引数がセットされるって事?
|
- Go language part 1
574 :デフォルトの名無しさん[sage]:2016/06/02(木) 16:14:42.71 ID:sFcAoyCt - 連投ごめん
f := late() によって、fはlater()の返り値の関数を取得してるんだね だから、f("apple")には上の無名関数func(string) stringが呼び出されて"apple"が引数とされているってことか ごめん、分かった
|