タグ

ブックマーク / d.hatena.ne.jp/kitokitoki (2)

  • Symbol#to_proc でワンコールブロックを簡潔に書こう - わからん

    Ruby の foo.map(&:bar) といったコードが、どういう仕組みで、どういうときに使えるのかを解説します。 使用例 Symbol#to_proc はワンコールブロック(処理が一行しかないブロック)を簡潔に書くのに使われています。 これが、 names = ['bob','bill','mike'] names.map {|name| name.capitalize} # => ["Bob", "Bill", "Mike"] 次のように、簡潔に書けます。 names = ['bob','bill','mike'] names.map(&:capitalize) # => ["Bob", "Bill", "Mike"] ひとことでいうと、「Symbol が Proc に変換され、Proc がブロックに変換されるから」上記のような記述が可能になります。 解説 Symbol には、to

    raomito
    raomito 2014/12/09
  • jQuery で ;(function () ...と、セミコロンで始めることがあるのはなぜか - わからん

    追記 たくさん反響があって驚きました。念の為書いておくと、私はこの記事で仕組みを解説しただけで、このようなノウハウに賛成も反対もしていません。追記はここまで。 azu さんのつぶやきで知った、Dangers of anonymous function closures が、例がよいのに説明が少ないので、ここで丁寧に解説します。なぜ、 jQuery で ;(function () ...とセミコロンで始めるコードがあるのかがわかります。 次のサンプルの実行結果を想像して下さい。 var foo = function(bar) { console.log("foo"); return bar; } (function(){ console.log("bar") })(); 結果は "foo bar" を印字します。多くの場合、これは意図しない挙動だと思います。"bar" だけだと思いませんか。

  • 1