Nimの型
関数の型
普通に。
nimtype F = proc(arg: int): int
Subrange型
nimvar hoge: range[0..5]
hoge = 6 # compile error !!
型のエイリアス
nimtype T = int # 型のエイリアスを作成
type D = distinct int # 全く新しい型を作成
T1 == T2
はtrueだが、 D1 == D2
は別物なのでfalseになる
Object
型
RootObj
型を継承したオブジェクトは継承可能になる
逆に RootObj
を継承しないとそのオブジェクトは継承できない
Enum型
定義の仕方
序数の扱い
succ
, pred
関数
{. pure .}
プラグマ
Option型
options
モジュールをimportして使う
関数側
Option[T]
は some(value)
か none(T)
を返す
わざわざ
none()
の引数に
T
を書かないといけないのはちょっと渋いね

nimlet f = "abc".find('d')
echo (f.get == 2) # これ、コンパイルエラー出ないんだが?
echo (f.isSome and f.get() == 2) # 本来はこれを強制して欲しい
なんか渋いな、あまり使う意義を感じられない..
参考