5.5.2 函数类型

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

5.5.2 函数类型

 

我们已经看到,在 F# 中,用箭头符号写函数值的类型,这在很多方面类似于构造元组的方式。早些时候,我们看到过,可以使用带类星号(int * string)的类型构造器,从其他简单类型,构造出元组类型。构造函数类型的方法类似,只是使用函数类型构造器(int -> string)。在数学意义上,函数就是描述每个可能的输入和返回值之间的关系,因此,不需要指定大量的关系的所有组合,只需要描述用 lambda 函数计算出结果的代码。

在 C# 中,也可以看到这种相似性。如果我们使用自己的Tuple 泛型类型和 Func 委托,可以把前一段的示例重写成 Tuple<int, string> 和 Func<int,string>。像我们在 F# 中所做的那样,不使用内置的类型,用泛型,把相似的构造实现成普通的 C# 类型。在 F# 的函数类型与 C# 的Func (或 Action)委托之间有非常的重要区别:普通的 F# 函数类型与写成 lambda 函数的等价函数的类型相同。在 C# 中,lambda 函数被转换为委托,委托与方法不是一回事,区别很小,但很重要:当考虑在 F# 中使用多个参数的函数时,会看得更清楚。现在,我们要研究一下如何把函数值当作参数值或返回值使用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值