RubyのコードをCrystalに置き換えてみる
Rubyライクに書けて
さらにコンパイルしてバイナリファイルを作ることができる
Crystalを触ってみました。
Crystalのサイト: Crystal
Crystalのドキュメント(英語):Introduction | Crystal Programming Language
他のサイトでも指摘されていることですが、あくまでもRuby風なのであって
Rubyのコーディングが同じように使用できるわけではないです。
というわけで、今回はRubyをCrystalに置き換えるとこんなエラーがよく出る
というのを紹介していきます。
Crystalに変更する際に起こるエラーは以下のようなものが存在します。
unterminated char literal, use double quotes for strings
String型にはダブルクオテーションを使用しなさい。というエラー
a = 'hello world!'
ではなく
a = "hello world!"
としなくてはいけません。
for empty arrays use '[] of ElementType'
配列型を使用する場合は配列に入る値の型を指定しなさい。というエラー。
arr = []
ではなく
arr = [] of String
のように記載しなくてはなりません。
Array | Crystal Programming Language
expecting token 'CONST', not 'xxxx'
aliasを使用した際にこのようなエラーが発生します。実質的にRubyのようなaliasの使い方はできないようです。
alias | Crystal Programming Language
aliasやalias_methodなどはRubyと動きが異なるため修正が必要です。
どのように修正が必要かは場合によって変わってきます。
unexpected token: NEWLINE private
rubyではprivateを書いた後の関数はすべてprivate関数になりますが、Crystalでは違います。
privateやprotectedの関数にしたい場合はすべてをprivate,protectedと記載する必要があります。
private def hoge puts "hoge!" end def piyo puts "piyo!" end
ではなく
private def hoge puts "hoge!" end private def piyo puts "piyo!" end
としなくてはいけません。
undefined method 'attr_accessor' undefined method 'attr_reader' undefined method 'attr_writer'
Crystalのドキュメントにはこのように記述されています。
We prefer getter, setter and property over attr_reader, attr_writer and attr_accessor
つまり
attr_reader, attire_writer, attir_accessorの代わりに getter, setter, property 使ってねということらしいです。
あくまでもRuby風だというのは使っていくとつくづく実感していきます。
えっこれないの!?とかは結構あります。
できれば今後も成長していってもらいたい言語ですので記事を書いていきたいとおもいます。
というわけでしばらくはCrystalについての記事を記載していきます。
なにか、間違いなどありましたらご指摘いただけるとありがたいです。