プログラミング言語 Crystal

Crystal の日本語ドキュメントはしばらく更新されておらず情報が古くなっているため、できるだけ原文の英語ドキュメントで最新の情報を参照ください。

翻訳にご協力いただける方は翻訳プロジェクトの issue や Crystal-JP の Slack からお知らせください。

型 (type)

lib 宣言の内部で type を宣言すると、C の typedef の宣言に近いことができます。ただし、より厳密です。

lib X
  type MyInt = Int32
end

C とは異なり、Int32MyInt を相互に交換することはできません。

lib X
  type MyInt = Int32

  fun some_fun(value : MyInt)
end

X.some_fun 1 # エラー: 'X#some_fun' の引数 'value' は
             # Int32 ではなく X::MyInt でなければならない

したがって、ラップしようとしている C ライブラリによって生成された不透明な型 (opaque type) に対して、type 宣言を有効に利用することができます。この例としては、fopen によって得られる C の FILE 型をあげられます。

typedef の型を設定する際の記載方法については型文法を参照してください。