0.2.0
言語
- 多次元配列を書けるようになりました。int[4,4]のように確保して、そのまま添字で読み書きできます。
3次元以上と、new int[,]{{1,2},{3,4}}のような初期化子は書けません。 - 末尾からの添字と範囲切り出しを書けるようになりました。a[^1]で最後の要素、a[1..]で途中から先を取れます。
配列だけで、文字列には書けません。文字列は位置を数えてs[s.Length-1]、切り出しはs.Substring(m,n)で書きます。 - タプルに対応しました。(a,b)=(c,d)の代入、(a,b)==(c,d)の等値比較、タプルの配列、foreachでの分解が
書けます。代入先には配列の要素やフィールドも置けるので、(a[i],a[j])=(a[j],a[i])で入れ替えられます。 - switch式にwhen句と非定数パターンを書けるようになりました。値でも範囲でも書き分けられます。
- is型テストを書けるようになりました。objectに入れた値を、boolやint、float、stringといった型で見分けられます。
派生のありうる参照型は今までどおり明示castで受けます。 - ローカル関数を書けるようになりました。外のローカル変数を読むこともできます。書き戻しはできないので、
戻り値で返して呼び出し側で代入してください。 - ジェネリック基底を書けるようになりました。class Leaf : Baseのように、継承した時点で型が決まる形です。
class Leaf : Baseのように型引数が具体でない形は書けません。 - 位置パラメータを持つrecordを継承できるようになりました。
- structとrecordに、計算するプロパティを置けるようになりました。
- 枠組みが持っている契約を、structやrecordに実装できるようになりました。
- structの中のenum、破棄代入、インデクサの読み、独自structのstatic readonlyも書けるようになりました。
修正
- UdonBehaviourSyncModeを書いても、シーン上のUdonBehaviourのSynchronizationが変わりませんでした。
0.1.9ではインスペクタで手動で選ぶ必要がありました。ソースで方式を決めている間は、
インスペクタ側では選べない表示になります。 - Behaviourの継承が3段目で落ちていました。2段までは動いていました。
- externのenumへのキャストが、向きによって通ったり通らなかったりしていました。
- 単項マイナスが、型によっては正しく解決できませんでした。
- 型引数を集約に具体化したときに、コンパイラが内部エラーで止まっていました。
- 走る機会が無い初期化コードが、黙って通っていました。
同梱サンプル
- サンプルを20本に増やしました。