タグ

2011年11月14日のブックマーク (2件)

  • Proc#call vs. yield - ruby trunk changes

    ご存知の通り Ruby では仮引数の最後に '&' を前置した「ブロック引数」を宣言することで、メソッドに渡されるブロックをProcオブジェクトとして受け取ることができます。つまりメソッドに渡されたブロックを呼ぶ方法には2通りあります。 def m1 yield :m1 end def m2(&block) block.call(:m2) end m1{|a| p a } # => :m1 m2{|a| p a } # => :m2 この2通りのブロック呼び出しの違いについて触れた記事もいくらかあります。*1 *2 主にブロックが渡されていない時のエラーメッセージが違うなどの挙動の違いについて触れられていますが、この文章では両者のYARVでの実装上の差異とパフォーマンスの違いについて書きます。 最初に結論を "可能なら Proc#call ではなく yield を使おう" 「可能なら」とい

    Proc#call vs. yield - ruby trunk changes
    kenichiice
    kenichiice 2011/11/14
    「"可能なら Proc#call ではなく yield を使おう"」
  • たのしいGit - Nalsh's Notes

    序 言うまでもないことだが、タイトルはジョークである。 そもそもバージョン管理は来我々がしたい事ではない(一部の人を除く)。別に作りたいものがあり、そこでの作業を円滑に進めるためにバージョン管理するのだから、所詮はヤクの毛刈りである。さらに、Gitクライアントのへっぽこさも相まってなかなかに時間をわれる。この文書はそのような人々が、より円滑にGitを使えることを祈って書かれた。 なお、バージョン管理というのはとても複雑なシステムであるため、バージョン管理自体が目的な人には楽しい世界である。そのような人々はぜひGitやその他のバージョン管理システムのマニュアルやソースコードを読んでいただきたい。きっとその奥深い世界を堪能できることだろう。 Git概説 Gitはこれまでの旧来のバージョン管理システムとは一風違った設計で作られている。また、Git特有の概念も多い。なので、まずGitの概観を説