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.