VS2010 Beta 2 F#編譯器總是抱怨我關於when關鍵字的使用,即使使用應該可以工作的複製粘貼代碼(例如these snippets)。舉例來說,這是試圖執行一個非常平凡的表情時,我得到的錯誤:F#:關鍵字時總是「意外」
「錯誤FS0010:意外的關鍵字‘當’的表達需要‘ - >’或其他標記。」
[for i in 1..50 when i < 10 -> i]
---------------^^^^
VS2010 Beta 2 F#編譯器總是抱怨我關於when關鍵字的使用,即使使用應該可以工作的複製粘貼代碼(例如these snippets)。舉例來說,這是試圖執行一個非常平凡的表情時,我得到的錯誤:F#:關鍵字時總是「意外」
「錯誤FS0010:意外的關鍵字‘當’的表達需要‘ - >’或其他標記。」
[for i in 1..50 when i < 10 -> i]
---------------^^^^
你想
[for i in 1..50 do
if i < 10 then
yield i]
'短' 語法與 '當' 去掉了而回。見
,並尋找文檔中的「緊湊型序列的表達」。
現在應該使用yield關鍵字。這樣的:
[for i in 1 .. 50 do if i < 10 then yield i]
謝謝,這是有效的。但'何時'有什麼問題? – Martin 2009-12-04 22:48:59
根據F#關鍵字引用(http://msdn.microsoft.com/en-us/library/dd233249(VS.100).aspx),when僅用於模式匹配和泛型類型約束。自從您引用的文章出來以後,可能是該語言發生了變化? – itowlson 2009-12-04 22:52:31
我只是建議你在舊博客文章中使用代碼片段時要小心一點(可能發生了小的語言更改)。 – Stringer 2009-12-04 23:04:55