就像常見的函式一樣,lambda 表示式可以返回乙個函式指標(委託例項)。這就意味著我們能夠使用乙個 lambda 表示式來建立並返回另乙個 lambda 表示式。這種行為在很多場景下都是非常有用的。我們先來看下面這個例子:
1 func saymyname(string這段**可以寫的更簡潔些。如果請求的語言型別未找到,我們可以直接丟擲乙個異 常,以此來避免返回乙個預設值。當然,出於演示的目的,這個例子展示了類似於一種函式工廠。另外一種方式是引入 hashtable ,或者更好的 dictionary型別。language)2;
10case"de
":11return name =>12;
15default:16
return name =>17;
20}21}
2223
void
main()
24
1儘管這看起來有點過度設計之嫌,但畢竟這種方式很容易擴充套件,並且可以應用到很多場景下。如果結合反射一起使用,可以使程式變得更靈活,易於維護,並且更健壯。下面展示了這個模式如何工作:static
class
translations212
13public
static func getsaymyname(string
language)
1418}19
20//
now it is sufficient to call translations.getsaymyname("de")
21//
to get the function with the german translation.
NotesDocument 作為函式返回值的問題
some code set my doc with the return value from the function.set recipientdoc getdocinnab search string if not recipientdoc is nothing then in debug i...
指標作為函式返回值
c語言允許函式的返回值是乙個指標 位址 我們將這樣的函式稱為指標函式。下面的例子定義了乙個函式 strlong 用來返回兩個字串中較長的乙個 include include char strlong char str1,char str2 else int main 執行結果 c language ...
1 6 函式作為返回值
函式做為返回值,其實就是用函式生成乙個函式。上 之前,我們再來回顧一下函式式程式設計的核心思想。函式式程式設計是把運算過程抽象成函式,在任何地方都可以呼叫這些函式。它的意義在於函式可以靈活使用,抽象幫我們遮蔽中間的運算細節,我們只關注最終實現的目標就可以了。示例 1 function once fn...