6.4 处理选项类型

来源:互联网 发布:sqlyog执行sql文件 编辑:程序博客网 时间:2024/05/24 06:09

6.4 处理选项类型

 

F# 中,最重要的可选值之一就是选项(option)类型。回顾一下我们在前面的章节中所看到的,选项类型能够安全地表达可能会缺失的值。这种安全性使我们在写代码时,不能轻易地假定值是存在的,当选项类型表示的值缺失时,将失败;相反,我们必须使用模式匹配,写代码要包含两种情况。在这一节,我们将学习处理选项类型两个有用的函数。

 

注意

 

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

 

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

 

清单 6.10 使用模式匹配求两个数字的和 (F#)

let readAndAdd1() =

  match(readInput()) with

  |None –> None

  |Some(n) –>

    match(readInput()) with

    |None –> None

    |Some(m) –>

     Some(n + m)

 

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

0 0
原创粉丝点击