Ruby と Crystal で違うところ

gazel を書いてみた時に、Ruby と違うなーって感じたところを書いてみる。

型付き

わぁお! 型が付いてる!!

Tuple が追加された

Crystal では Tuple が追加されたので、引数のリストは実際 Tuple になったよ。

除け者にされた then

私は Ruby では then を付ける派だったんだけど、Crystal では then 付けなくてもいいんだね。

        if File.exists? gazel_file then                # then 付けちゃダメ!
          others = Dir.glob gazel_file

          return others.size == 1 ? others.first : gazel_file
        end

Dir.pwd が無い!

Dir.pwd の替わりに Dir.current を使おう!

    def find(options)
      here = Dir.current

      until filename = have_gazel_file?
        Dir.cd ".."

        return { "", here } if Dir.current == here || options[:no_search]?

        here = Dir.current
      end
      { filename, here }
    end

ʕ•͡ω•ʔ Dir.chdir もないけどな。

Hash の has_key? が無い

替わりに []? を使おう。