【发布时间】:2015-09-25 17:56:28
【问题描述】:
在 F# 中,具有不同 arity 和返回类型的两个函数可以共享一个名称吗?
例如,对于 2 个参数,f 返回一个 int:
let f (x:int) (y:int) : int = x + y
但是有 3 个参数,f 返回一个 bool:
let f (x:bool) (y:bool) (z:bool) : bool = x & y & z
似乎返回类型应该可以通过给定的参数数量来推断,但我得到了编译错误:
值'f'的重复定义
这是 F# 的限制吗?
【问题讨论】:
-
您可以对成员执行此操作,但请注意
f 1的类型不明确,这可能是个问题 -
向所有参数添加显式类型
-
这是一个限制 - 模块中的函数需要有不同的名称
标签: types f# overloading