F#:'关键字'时总是"意外"

Mar*_*tin 8 syntax f# visual-studio-2010-beta-2

VS2010 Beta 2 F#编译器总是抱怨我对when关键字的使用,即使使用应该起作用的复制粘贴代码,例如这些代码段中的任何一个.例如,这是我在尝试执行一个非常简单的表达式时得到的错误:

"错误FS0010:表达式中出现'意外关键字'.预期' - >'或其他标记."

[for i in 1..50 when i < 10 -> i]  
---------------^^^^
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 11

你要

[for i in 1..50 do
    if i < 10 then
        yield i]  
Run Code Online (Sandbox Code Playgroud)

一段时间后删除了'when'的'short'语法.看到

http://blogs.msdn.com/dsyme/archive/2008/08/29/detailed-release-notes-for-the-f-september-2008-ctp-release.aspx

并在该文档中查找"紧凑序列表达式".


Str*_*ger 7

您现在应该使用yield关键字.像那样:

[for i in 1 .. 50 do if i < 10 then yield i]
Run Code Online (Sandbox Code Playgroud)

  • 根据F#关键字引用(http://msdn.microsoft.com/en-us/library/dd233249(VS.100).aspx),when仅用于模式匹配和泛型类型约束.可能是因为你引用的文章出现了对语言的改变? (4认同)