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.