- 178 名前:デフォルトの名無しさん mailto:sage [2015/01/20(火) 14:02:52.06 ID:CAQhwwqz.net]
- >>177
クロージャとして扱うってのは>>175の二番目のmap<S,T,F:Fn(&S)->T>っていう高階関数は、 fn foo(...)で定義された関数を渡すことができるし、let baz = |&:| { ... }とかやって定義したクロージャを渡すこともできる。 >>175の一番目のmap<S,T>はfnで定義した関数は渡せるけど|&:| {...}は渡せない。 つまり、関数とクロージャは別物なんだけど、クロージャを受け取る高階関数は関数も受け取れる。 それを指して「クロージャを受け取れる高階関数は、普通の関数もクロージャとして扱う」っていう意味で言った。 referenceのfunction typeの項 doc.rust-lang.org/reference.html#function-types にもあるとおり、関数の型はfn(args) -> retと書けるもので、traitの実装とかではない。 一方でクロージャはFnトレイトの実装。違いは環境を持つか否か。
|

|