【object C】ObjectC中如何彌補switch引數不能為字串的方法
參考:
http://stackoverflow.com/questions/8161737/can-objective-c-switch-on-nsstring
NSString *lookup = @"Hearts"; // The value you want to switch on
typedef void (^CaseBlock)();
// Squint and this looks like a proper switch block!
// New ObjC syntax makes the NSDictionary creation cleaner.
NSDictionary *d = @{
@"Diamonds":
^() {
NSLog(@"Riches!");
},
@"Clubs":
^() {
NSLog(@"Clubs");
},
@"Spades":
^() {
NSLog(@"Spades");
},
@"Hearts":
^() {
self.hearts++;
NSLog(@"Hearts!");
}
};
((CaseBlock)d[lookup])(); // invoke the correct block of code
Unfortunately this simple alternative doesn't support 'default', nor fall-through, and it'll crash if the lookup value isn't found. To avoid the crash, and have some default code, the last line could be:
CaseBlock c = d[lookup];
if (c) c(); else { NSLog(@"Joker"); }
相關文章
- AI是如何彌補技術鴻溝的?AI
- javascript中將數字轉為字串的方法JavaScript字串
- subprocess中命令為引數序列和字串的區別字串
- C#字串轉換為數字的4種方法C#字串
- c# 方法引數_值引數C#
- c# 方法引數_引用引數C#
- Oracle升級中的引數補充Oracle
- [Object C]object c中完成將xml轉換為jsonObjectXMLJSON
- MVC如何避免控制器方法接收到的值不能被轉換為引數型別MVC型別
- c#方法引數_輸出引數C#
- c# 方法引數_陣列引數C#陣列
- C#通過反射獲取類中的方法和引數個數,反射呼叫方法帶引數C#反射
- 不能用谷歌翻譯的痛,就用這些翻譯神器來彌補吧谷歌
- 19c exadata不能設定的引數
- c++中物件的引用作為函式的引數C++物件函式
- C#中的值引數,引用引數及輸出引數C#
- Laravel同時接收路由引數和查詢字串中的引數Laravel路由字串
- C#中如何按位元組數擷取字串?C#字串
- 很好用的request轉換為實體方法還有判斷實體所有引數不能為空的方法
- 填坑利器?Redis如何彌補傳統MySQL架構的不足RedisMySql架構
- MySQL字串中抽取數值的方法MySql字串
- 【轉】Java中判斷字串是否為數字的五種方法Java字串
- ts中如何限制方法傳入的引數data必須是陣列,且為偶數項?陣列
- C/C++中的引數傳遞方式C++
- 【C語言】編寫一個函式reverse_string(char * string) 實現:將引數字串中的字元反向排列。要求:不能使用C函式庫中的字串操作函式。C語言函式字串字元
- C#中命名引數和可選引數C#
- laravel中whereIn方法中使用SQL作為引數的途徑LaravelSQL
- Python中判斷是否為數字字串的方法是什麼?Python字串
- C# 中傳遞引數到執行緒的 N 個方法C#執行緒
- C# 中的 in 引數和效能分析C#
- c++中數字和字串的轉換C++字串
- C,C++中如何向main(int argc , char argv[])傳遞引數C++AIGC
- 在Oracle中,如何判斷一個字串是否為數字?Oracle字串
- Java中將方法作為引數傳遞5種方式Java
- 面試之jquery中的ajax方法引數面試jQuery
- 方法中引數的型別詳細型別
- 不能將引數 2 從“char [8]”轉換為“LPCWSTR”
- golang 方法作為引數傳遞Golang