Chapter3 - Control Flow
时间:2010-09-19 来源:兴说:
中你就能看出来。
在 F#中 if .. then .. else 结构可以是一个表达式,这表示他可以返回一个值。一或两个不一样的值可以从表达式
中返回,这取决于你 Boolean 表达式的值。下面我们看一个例子。
#light
let result =
if System.DateTime.Now.Second % 2 = 0 then
"heads"
else
"tails"
print_string result
F# 的类型系统要求在 if ... then ... else 表达式中必须返回相同的类型,不然编译器
将会报错。而如果你确实希望能够返回不同类型的值,你可以在 if ... then ... else 表达式中
返回 obj类型(System.Object)。以下的示例就展示了如何实现。
#light
let result =
if System.DateTime.Now.Second % 2 = 0 then
box "heads"
else
box false
print_any result
习惯于命令式编程的开发人员可能会奇怪 if ... then ... else 表达式 想返回值的时候必须有 else ,
而如果我们把 else 从表达式中移除,当当前的秒数不为偶数时,result 将什么都不是, 这对于一个
函数式语言来说是应该避免的。当然也有另一种方式来使用 if .. then 而不使用 else ,但那已经是跟
命令式编程的风格非常相似了,所以我们把它放到第四章来介绍。
相关阅读 更多 +