我正在尝试在Visual Studio Code
中关注the docs to create an f# program当我突出显示我的代码并按Alt Enter在交互式窗口中运行时出现错误
Script.fsx(8,5):error FS0010: Unexpected keyword in binding. Expected incomplete structured construct at or before this point or other token.
[更新]
我尝试了几次才能使其工作,突出显示代码,如图所示。 离开电脑一小时后奇怪,我现在再也无法重复这个问题了。
答案 0 :(得分:3)
交互式窗口中显示的输出表明您按Alt + Enter时的选择与您在屏幕截图中显示的选择不同。更具体地说,您执行的选择以let isVowel
开头(没有前导空格),以word.[0] then
结束。
更具体地说,您尝试执行的代码是:
let isVowel (c: char) =
match c with
| 'a' | 'e' | 'i' |'o' |'u'
| 'A' | 'E' | 'I' | 'O' | 'U' -> true
|_ -> false
if isVowel word.[0] then
由于多种原因,此代码无法编译。首先,then
之后没有任何内容。其次,if
缩进不正确:它需要缩进到与match
相同的位置(在这种情况下,它将被视为isVowel
定义的一部分)或缩进到同一位置作为let isVowel
(在这种情况下,它将被视为与isVowel
相同的块的一部分),但这里它既不是let isVowel
的右侧,而是match
的左侧1}}。
如果您只想执行isVowel
的定义,那么您不应该在选择中包含if
。
如果您想执行toPigLatin
的整个定义,那么您应该包含let toPigLatin
行和整个if/else
表达式。