LoginSignup
0
0

UWSCRの新要素:enum

Last updated at Posted at 2023-12-09

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型のみ有効です
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0