9.2.1 使用保存的函数记录

728 篇文章 1 订阅
349 篇文章 0 订阅

9.2.1 使用保存的函数记录

 

使用记录保存函数,是 OCaml 中的常用方法,在 F# 中有所扩展。在看到可能的改进之前,清单 9.7 为第八章的原始解决方案提供了提醒功能。

 

清单 9.7 用函数的记录检查客户 (F#)

type ClientTest =   <-- 表示检查

  { Check : Client –> bool 

     Report : Client-> unit }

 

let testCriminal(client) =client.CriminalRecord = true 

let reportCriminal(client) = 

  printfn "'%s' has a criminalrecord!" client.Name

 

let tests = 

  [ { Check = testCriminal       | 创建记录值

       Report= reportCriminal };   |

     (* more tests...*) ]

 

代码首先创建一个记录类型,指定用函数类型,构成检查和报告部分。然后,创建两个函数,组合起来构成一个记录类型的值。使用函数的记录在概念上很简单,很容易将使用单独函数的代码,重构成使用记录的设计。如果我们要把这段代码改变成更加传统的 .NET 版本的话,可能不止一步。

我们前面提到过,函数类型类似于只有一个方法的接口。包含两个函数的记录,与有两个方法的接口非常相似,就毫不奇怪了。在 C# 中,我们几乎可以肯定使用接口来实现这种设计,F# 也可以这样做。

类似于成员,在创建健壮的应用程序,或可重复使用的 .NET 库时,接口更加重要。如果我们使用接口,不需要提供应该如何实现,因此,在写应用程序时,给我们很大的灵活性。在这一章的后面,我们将讨论在 F# 中实现接口的方法。开发能够从 C# 中调用的 .NET 库时,接口也非常有用。如果我们在 F# 中声明接口,C# 代码将把它看作是普通的接口。另一方面,带有函数作为成员的 F# 记录类型,看起来像有属性的类,有一些难以使用的类型。我们看一下如何能把记录类型改编成接口,但仍然以 F# 中自然的方式使用它。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值