タグ

ブックマーク / rubikitch.hatenadiary.org (4)

  • 今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました

    tapかわいいよtap - http://rubikitch.com/に移転しました 俺も含めたinject厨は、Ruby 1.8.7からtapへ鞍替えしたほうがいいかもしれない。 たとえば、簡単な例題として、1〜6のうちで偶数の二乗を集めるコードを示そう。 (1..6).select{|x| x % 2 == 0}.map{|x| x*x} # => [4, 16, 36] (1..6).inject([]){|a,x| a << x*x if x % 2 == 0; a} # => [4, 16, 36] [].tap{|a| (1..6).each{|x| a << x*x if x % 2 == 0}} # => [4, 16, 36] 一番上がselectとmapを使った関数プログラミング的な方法。短くて明確だけど強いていえば余計なオブジェクトが生成される上、ループが2回になる欠

    今はinjectよりもtapだよね〜 - http://rubikitch.com/に移転しました
  • Ruby初心者〜初中級者が読むべきコードについて - ’(rubikitch wanna be (a . lisper))

    Rubyの初心者にたいして「これは読むべき」だと思うコードを教え… - 人力検索はてな 今北産業ではないが超要約してみる。 Ruby初心者はまず文法や基的なクラスを習得せよ。 初級者ならばmailread.rbなどの簡単なライブラリを読んでみよう。 中級くらいからはWEBrickやBitChannelのソースがよい。 そして、なんといっても、力をつけたいならばソースを改造してみるのが一番だ。改造するんだからソースを理解しないといけないし、書く力も養われる。俺は「興味あるプログラム、気に入ったプログラム」をおすすめする。なぜなら、好奇心があるからモチベーションを保ちやすい。 やっぱり改造一番だよなぁ…書籍のサンプルコードはスペースの関係でミニチュア版になってるし、あくまで「作られた例(contrived example)」に過ぎないんだよね。生きたソースコードにはかなわない、うん。 俺はe

    Ruby初心者〜初中級者が読むべきコードについて - ’(rubikitch wanna be (a . lisper))
  • 配列の先頭要素が「0番目」であることは気持ち悪いか…「N番目」という言葉を考察してみる - http://rubikitch.com/に移転しました

    JavascriptPHPの配列や関数などで 配列の最初の要素がary[0]に… - 人力検索はてな C言語、Ruby、Lispなど多くの言語では配列は0起点である。つまり、先頭の要素のインデックスは0である。 なぜそうなっているか‥それは実装上の都合であったり歴史的理由だったりする。 C言語の配列は「連続したメモリ空間の、先頭アドレス」で表現している。そして、オフセットを進めることでそれぞれの要素にアクセスしている。だから配列の最初の要素を「0番目」とすることでアドレス計算が楽になるわけだ。 多くの言語はC言語の文法を拝借しているし、C言語は十分普及しているから、「C言語にあわせて配列は0起点でいいや」となっていると推測している。コンピュータの世界じゃ歴史的理由ってのがけっこう多い。 そういうわけでプログラマが配列の要素を数えるとき、勝手に「0番目」→「1番目」→「2番目」と数えている

    配列の先頭要素が「0番目」であることは気持ち悪いか…「N番目」という言葉を考察してみる - http://rubikitch.com/に移転しました
  • Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))

    Ruby 1.8.7ではRuby 1.9からのbackportがとても多い。つまり、Ruby 1.9のあのメソッドがRuby 1.8でも使えるようになったということだ!! これがすごいという機能がもりだくさん、ちょっと大人になったRuby 1.8をお楽しみに。 Enumeratorは組み込みになり、eachなどのイテレータメソッドはブロックをつけないとEnumerable::Enumeratorを返すようになった。おかげでブロック付きメソッドの柔軟性が飛躍的にアップ! expectationsテスティングフレームワークによるテストで書いているので「gem install expectations」してから実行してみよう。手軽にユニットテストが書けるからおすすめ。書式は…見ればわかるよねw ChangeLogで現在からRuby 1.8.6リリースまでを読んだので、ほとんどカバーしていると思わ

    Ruby 1.8.7で使えるようになったRuby 1.9のメソッドたち - ’(rubikitch wanna be (a . lisper))
  • 1