回答
我發現這個在博客中: 「What does this C# code look like in F#? (part one: expressions and statements)」
C#有一個名爲操作員「默認「 ,返回給定類型的零初始化 值:
default(int)
它的實用性有限;最常見的情況下,您可以在通用中使用默認(T) 。 F#具有 類似的構造爲庫 功能:
Unchecked.defaultof<int>
技術上講F#函數Unchecked.defaultof<'a>
是一個相當於default
操作者在C#。不過,我認爲值得注意的是,defaultof
在F#中被認爲是不安全的,應該只在真正需要時才使用(就像使用null
,這在F#中也不鼓勵)。
在大多數情況下,您可以通過使用option<'a>
類型來避免需要defaultof
。它允許您表示一個值尚不可用的事實。
但是,這裏是一個簡短的例子來演示這個想法。下面的C#代碼:
T temp = default(T);
// Code that may call: temp = foo()
if (temp == default(T)) temp = bar(arg)
return temp;
將可能寫成這樣在F#(使用勢在必行功能):
let temp = ref None
// Code that may call: temp := Some(foo())
match !temp with
| None -> bar(arg)
| Some(temp) -> temp
當然,這要看您的具體方案,並在某些情況下defaultof
是唯一你可以做。不過,我只想指出在F#中使用較少的defaultof
。
在你的C#示例中,你在if語句中使用賦值運算符而不是等號運算符。這是故意的嗎? – doppelgreener 2013-10-14 05:03:02
我應該說這對我不起作用,讓t = ref無 t:= Some(context.Items.FirstOrDefault(fun ii - > ii.Name = i.Name)) match!t with |一些它 - > - 完成這裏即使它是空的 |無 - >忽略 – 2015-01-20 15:00:12
- 1. 什麼是C#的默認()的等效Java關鍵字/結構?
- 2. 什麼是默認的等效:在Shake
- 3. C Sharp中「friend」關鍵字的等效含義是什麼?
- 4. 什麼是c printf%f默認精度?
- 5. 什麼是VB.NET相當於C#的默認關鍵字?
- 6. 什麼是建議內容關鍵字的有效庫?
- 7. QML中默認關鍵字的用途是什麼?
- 8. F# - 什麼是「it」關鍵字?
- 9. 什麼是[Android] Java的等效VB.NET的靜態關鍵字?
- 10. 什麼是等效於Python的yield關鍵字的Matlab?
- 11. C#中的Register關鍵字是什麼?
- 12. C++中的explicit關鍵字是什麼?
- 13. 什麼是VB Linq中Aggregate關鍵字的C#等價物?
- 14. 什麼是Java中C#'var'關鍵字的等價物?
- 15. C++中'和','或'等關鍵字的用途是什麼?
- 16. 什麼是C++字符串的默認容量?
- 17. v3中StringTemplate.setAttributes(Object)的v4中的等效內容是什麼?
- 18. 什麼是java的transient關鍵字的C#等價物?
- 19. 請告訴我什麼是C#.net使用「默認」關鍵字的
- 20. Javascript的默認關鍵字
- 21. 什麼是C++/CLI等同於C#的默認(T)?
- 22. 以下VBA代碼的Jython中的等效內容是什麼?
- 23. 什麼是Xamarin開發中的Content Provider(Android)的等效內容
- 24. 以下表達式的python中的等效內容是什麼?
- 25. 什麼是C#「is」關鍵字的VB.NET等價物?
- 26. 什麼是C#'is'和'as'關鍵字的Java等價物?
- 27. 什麼是C#「var」關鍵字的VB.NET等價物?
- 28. C#中的等效語法是什麼?
- 29. Cocoa中的等效C#'Thread.Join()'是什麼?
- 30. 什麼是C#中的等效代碼#
+1好問題。繼續看這個^^ – 2010-02-11 17:39:01