[Unity] C#7 を使う

最後はC#7

C#4C#5、C#6と続きまして最後のC#7編となります。
タプルが一番のメインかも?

タプル(Tupple)

変数の宣言を型の代わりにタプルというもので宣言できます。
関数の戻り値で2つ以上の値を戻したいときは超有能の機能となります。
(int count, int sum) Tally(IEnumerable items)
この場合だと、2つのintを返すことができます。
これまでだと構造体やクラスを作らないといけなかったのが、その必要がなくなりますよ。すごい。
もちろん戻り値だけではなく、普通に変数としてつかえます。

型スイッチ

switch~case文のcase文で、型を判別したら条件式をつけたりすることができるみたいです。
case int n when n > 0:
この場合だと、int型で0より大きい値だったら合格になります。

数値リテラルの改善

byte bitMask = 0b1100_0000;
uint magicNumber = 0xDEAD_BEEF;
2進数表記や、"_"で区切ることができるようになりました。
見やすい。

タプルの ==, != 比較 (c# 7.3)

(int a, (int x, int y) b) t2 = (2, (1, 2));
Debug.Log(t2 == (1, (2, 3)));
// False
タプルの比較がC#7.3からできるようになりました。
UnityもC#7.3まで使えない時期が少しありました。懐かしい。

ref 再代入 (c# 7.3)

int x = 1;
ref var r = ref x;
これは、rの値を変えるとxも値がかわります。

ref readonly

int x5 = 0;
ref readonly var readonlyX = ref x5;
読み取り専用のref、みたいな?

is 式

int x7 = 3;
if (x7 is int val)
変数の型を簡単に調べることができるようになりました。
地味に使える場面はありますよ。

値の破棄

var (q, _) = DivRem(123, 11);
これはタプルの例ですが、いらないものには"_"にするとないものにすることができます。

参照戻り値と参照ローカル変数

static ref int Max(ref int x, ref int y)
なんかすごい宣言です。サンプルでは、ref xかref yのどちらかをrefします。

ローカル関数

int f(int n) => n >= 1 ? n * f(n - 1) : 1;
Debug.Log(f(10));
// 3628800
関数の中で関数を簡単に宣言できます。
一回しか使わない単純な関数とかこれで十分ですね。
まれによくある。


ながながとサンプルpiyo

c#7シリーズでは癖のある使える機能がたくさん実装されました。
なんかこんな機能あったなと覚えておくだけでもいいと思います。


CITY 8巻
僕のヒーローアカデミア 24巻
メイドインアビス(8)
ハクメイとミコチ 7巻

0 件のコメント :

コメントを投稿