6.4 处理选项类型

6.4 处理选项类型

 

    F# 中,最重要的可选值之一就是选项(option)类型。回顾一下我们的在前面的章节中看到,它给了我们一种安全的方法来表示值可能会缺失的事实。此安全性意味着,我们不能轻松地写代码,可能假定值是存在的,也可能当这个选项类型表示缺失值时,将失败。相反,我们必须使用模式匹配,为这两种情况而写代码。在这一节中,我们将学习两个有用的函数,处理选项类型。

 

注意

 

   我们刚才看到的处理元组的函数不属于 F# 库,因为,它们非常简单,显式使用元组通常足够容易。然而,我们将在这一节中看到的,处理选项类型的函数,是标准的 F# 库的一部分。

 

    首先,让我们快速看一个示例,说明了为什么我们需要高阶操作来处理选项类型。我们将使用来自前一章的 readInput 函数,从控制台读取用户输入,并返回一个 int option 类型的值。当用户输入有效的数字时,它将返回 Some(n) ;否则,它将返回 None。清单 6.10 显示了我们如何实现这个函数,读取两个数字。并返回它们的和,或者 None,当任一个输入的不是有效数字时。

 

Listing 6.10 Adding two options using pattern matching (F#)

 

let readAndAdd1() =
  match (readInput()) with
  | None –> None
  | Some(n) –>
    match (readInput()) with
    | None –> None
    | Some(m) –>
      Some(n + m)

    该函数调用 readInput,读取第一个输入,使用使用模式匹配提取值,并为第二个输入重复此过程。当两个输入都是正确的,相加并返回 Some ;在所有其他分支,都返回 None。不幸的是,显式使用模式匹配使代码更长。现在,让我们看两个操作,将帮助我们更加简洁地重写代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值