長時間的開關狀態常常被忽視。解決方案是使用多態。但是,如果我打開的東西不是一個類型代碼?我想這樣做的是像這樣的東西更換switch語句...基於變量值的動態方法調度
public void HandleString(string s = "Hello")
{
...
}
public void HandleString(string s = "Goodbye")
{
...
}
...
HandleString("Hello"); // results in the first method being called.
這將替換以下...
string s = "Hello";
switch(s)
{
case "Hello":
...
break;
case "Goodbye":
...
break;
default;
break;
}
任何想法?從理論上講,我認爲你可以完全消除'if/switch'語句,只需調用基於表達式值自動綁定的方法。
Common Lisp是一種相對廣爲人知的語言,它允許一種調度方法超過特定的值(以及其他類型常見的類型)。 – 2009-12-01 00:51:25