https://twitter.com/kinaba のログ (twilog の方が便利です。)
search.twitter.com 日本語かどうかの判定が微妙だな | |
あれだなーやっぱり俺は実装力がなさすぎる。黙ってコード書けよって感じ。 ggg | |
http://parametron.blogspot.com/2008/07/3-not-problem.html が not 1つでできるような気がしてしまっているのでたぶん何か勘違いしている | |
やっぱり勘違いしていた | |
@nagise 逆にクロージャのデメリットってなにがあるんでしょうか。言語仕様が複雑になること? | |
@nagise 個人的には http://www.javac.info/closures-v04.html の with の例のようなものが書けるのが大きいと思います。あれは return/continue/break を考えると内部クラスのみで実現するのはとても大変 | |
@nagise スコープに関して何かそんなに変わってましたっけ…単に1メソッド内部クラスのシンタックスシュガーだと思ってました | |
くるるさんの数学ガールがのっけから難しすぎて紅茶吹いた | |
@nagise とりあえず外の変数の変更もできたかと(ちょっとあやふや)> Java のクロージャ | |
@nagise あと、「単なる高階関数」だと return/break/continue の扱いが特に工夫されませんよね、普通。「 Java7 の」クロージャはその辺り処理してユーザー定義制御構造をちゃんと書けるようにしてあるところがポイントだと思うのです | |
いわゆる「クロージャ」よりは Ruby のブロックに近い | |
@nagise http://twitter.com/t_yano/statuses/859762588 「 function(){} の内側から外の変数にアクセスできる」 == 「環境をもってる」なので、そういう機能のことをクロージャと呼んで別に構わないのでは | |
「クロージャ」ってそもそも物凄く使われ方が混乱してる単語なので細かいところを気にすると負けではあると思う | |
元々は「 function(){...} の内側から外側の変数を参照できる(読めるだけのこともあるし書けるだけのこともある、言語による)」という機能を実装するための処理系側の実装手法のことで、それがそういう「外もさわれる関数」そのものを指す用語になってきちゃった感じ | |
外の変数を変更できるかできないかの差を重視する観点はあんまり無いように思います…。単に環境に値を格納するか mutable な参照を格納するかの差でしかないので | |
そして設計のパラダイムにも影響すると思うなーというのが http://twitter.com/kinaba/statuses/859736498 この辺り、と、あと、1メソッド内部クラスと比べて書くのがずっと楽になるのでそういう API を積極的に適用できるようになるとは思う | |
@nagise バラモス様 (^^;;;; いっちゃん下の with(FileReader in : makeReader()) { … } のヤツです。最初の "Closure Literals" の後半 3 段落に書いてあるように、 { … } が作るクロ ... | |
break や continue や return すると外側スコープでループを抜けたり関数抜けたりできます。 | |
tanakh さんのソースを呼んで guard をこうやって使うのかーと目から鱗を落としているところ | |
@nagise です。それが、クロージャを使うと using のような言語のプリミティブではなくてライブラリのメソッドとして自分で書けるようになってます | |
キャンベラってシドニーから4時間半もするのか1時間くらいかと思ってた | |
ゆうはんタイム |