unity3d Func<>

public enum ROAD{
	EAST,
	WEST,
	SOUTH,
	NORTH
}
string EastWay(int _len){return ("East : "+ _len);}
string WestWay(int _len){return ("West : "+ _len);}
string SouthWay(int _len){return ("South : "+ _len);}
string NorthWay(int _len){return ("North : "+ _len);}
private Func<int, string> WhichWay(ROAD _way)
{
	switch( _way )
	{
	default:
	case ROAD.EAST: return EastWay;
	case ROAD.WEST: return WestWay;
	case ROAD.SOUTH: return SouthWay;
	case ROAD.NORTH: return NorthWay;
	}
}

void Main()
{
	Debug.Log (WhichWay(ROAD.SOUTH)(10));	// South : 10
}

It’s working !!!

用一個程序去決定你使用其他程序的方式.

簡單說, 運作時 WhichWay(ROAD.SOUTH) 因為 Func retrun 的關係會 return SouthWay 這一個 class,
然後 WhichWay(ROAD.SOUTH)(10) 則會化為 SouthWay(10) 然後再 return 為 “South : 10” 這一個 string.

大量的 stage 判斷時非常有用.

需注意的是 Func<第一參數, 第二參數>
第一參數是 input. 第二參數是裡頭的 class 的 return type.

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料