Chapter3 - Control Flow


F# 有相较于其他的单纯的函数式语言来说比较其他的控制流。从以下的 if ... then ... else 表达式

中你就能看出来。

在 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 ,但那已经是跟

命令式编程的风格非常相似了,所以我们把它放到第四章来介绍。

转载于:https://www.cnblogs.com/SinSay/archive/2010/09/19/1830717.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值