F#if语句函数带有参数语法

时间:2018-12-20 13:04:09

标签: if-statement compilation f#

问题是:我无法弄清楚错误在显示时指的是什么

这是错误: source_file.fs(10,5):错误FS0010:绑定中意外的关键字“ if”。预期为'='或其他令牌。

而且我一直在研究此错误和正确的语法。

现在,我希望从程序的一般外观上可以明显看出我想要做的事情。

了解正确的语法非常有用,因为Microsoft的文档不是很好。

既然是这种情况,我就是不明白有什么问题。

open System

let one = "one"
let two = "two"

if oneortwo one then printfn one + " 1"
else printfn two + " 2"

let oneortwo(a : string)
    if a = "one" then return true
    elif a = "two" then return false

return false

1 个答案:

答案 0 :(得分:6)

F#是一种基于表达式的语言,这意味着所有内容都有一个值(返回值)。 F#也是静态类型,因此返回的所有内容都是特定类型。

由于所有内容都是表达式,因此不使用return关键字。函数主体中的最后一个表达式是返回值。

if ... then ... else也是如此:每个分支都必须返回一个值并且具有相同的类型。

您的函数的正确语法是

let oneortwo a =
    if a = "one" then true
    else false

Scott Wlaschin的网站F# for fun and profit

是学习F#的绝佳来源