これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の11日目の記事です。
Ruby には同じ機能なのに複数の名前があるメソッドがありますが、Crystal は基本的に1機能に1メソッド名という方針のようです。 それにより Ruby にはあるのに Crystal にはないメソッド名があります。
気がついたのは、
Enumerable#collect
がない(#map
がある)。Enumerable#collect!
がない(#map!
がある)。Enumerable#find_all
がない(#select
がある)。Array#length
がない(#size
がある)。Array#slice
がない(#[]
がある)。String#length
がない(#size
がある)。String#slice
がない(#[]
がある)。Object#kind_of?
がない(#is_a?
がある)。
あと、機能的には同じだけど、Ruby とは異なるメソッド名になっているものがあります。
Ruby の Array#include?
は Crystal では Array#includes?
です。この理由はよくわかりません。
Ruby の Integer#[]
は Crystal では Int#bit
です。これば Crystal の方がわかりやすいと思います。
Ruby の attr_reader
, attr_writer
, attr_accessor
は、Crystal では getter
, setter
, property
です。
他にもあると思いますが、まあこの辺は慣れるしかないですね。