Crystal は Ruby にあるメソッド名がなくてつらい

これは「Ruby脳にはCrystalつらい Advent Calendar 2015」の11日目の記事です。

qiita.com

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 です。

他にもあると思いますが、まあこの辺は慣れるしかないですね。