UWSCR独自の機能としてenum(列挙体)が追加されました。
enum定義
enum-endenum
構文で定義します。enumはグローバル定数として定義されます。
enum MyEnum
foo
bar
baz
endenum
それぞれの値は定数名.メンバ名
で得られます。
print MyEnum.foo // 0
print MyEnum.bar // 1
print MyEnum.baz // 2
enumの取る値について
値の指定がなければメンバの値は0
から始まり、1
ずつ加算されていきます。
enum MyEnum
foo // 0
bar // 1
baz // 2
endenum
メンバ名=数値
とすることで任意の値を割り当てることもできます。
enum MyEnum
foo = 1
bar = 2
baz = 4
endenum
一部のみに値を割り当てた場合、次の未割り当てのメンバは1加算された値を取ります。
enum MyEnum
foo = 10
bar // 11
baz // 12
endenum
引数の型チェックにおけるenum
ユーザー定義関数で引数の型としてenum名を指定した場合、そのenumの取り得る値のみ受け付けるようになります。
enum MyEnum
foo
bar
baz
endenum
function MyFunc(value: MyEnum)
result = "<#value>が入力されました"
fend
print MyFunc(MyEnum.foo) // 0が入力されました
print MyFunc(MyEnum.bar) // 1が入力されました
print MyFunc(MyEnum.baz) // 2が入力されました
// MyEnumが取り得る値であれば数値を直接渡すこともできる
print MyFunc(0) // 0が入力されました
// 該当しない数値はエラー
print MyFunc(100) // [関数呼び出しエラー] 不正な引数の型: valueはMyEnum型のみ有効です