Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

某「rubyでcdrっぽい事したい? drop使えば良いんじゃないですか?(鼻ホジ」 ぼく「……あっ」

以前の記事で盛大にドヤリングしたsliceを用いたcdrモドキ。
ところがドッコイ、もっとマトモな方法がありました。
carはtake(1)あるいいはfirst、cdrはdrop(1)で代用できてしまします。

> ary = (1..10).to_a
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

> ary
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

> ary.drop(1)
#=> [2, 3, 4, 5, 6, 7, 8, 9, 10]

> ary.take(1)
#=> [1]

> ary.first
#=> 1

> ary
#=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

ぱっと見でやりたい事がわかります。
その上、どちらも非破壊オンリーなので、以前よりcarやcdrと近くなりました。

takeとfirstの違い

> ary.take(1).class
#=> Array

> ary.first.class
#=> Fixnum

carはリストの先端の要素を返してくるメソッドです。
なので、firstを使うのが正しいと思われます。