F# 创造;加上;使用强制F的自定义类型的函数#
我目前有一个特殊类型,可以是int或float。我想创建一个函数,允许我将其中的两个添加到一起。(必要时强制int为float)我希望函数有一个特殊类型的返回类型 以下是我到目前为止的情况:F# 创造;加上;使用强制F的自定义类型的函数#,f#,coercion,F#,Coercion,我目前有一个特殊类型,可以是int或float。我想创建一个函数,允许我将其中的两个添加到一起。(必要时强制int为float)我希望函数有一个特殊类型的返回类型 以下是我到目前为止的情况: type number = A of int | B of float;; let plus x1:number x2:number = (number x1) + (number x2);; 不编译。但它看起来与我使用ML编程语言时编写的内容类似 我的plus函数在F#中应该是什么样子的?所以最好的方
type number = A of int | B of float;;
let plus x1:number x2:number = (number x1) + (number x2);;
不编译。但它看起来与我使用ML编程语言时编写的内容类似
我的
plus
函数在F#中应该是什么样子的?所以最好的方法是
let plus x1 x2 =
match x1,x2 with
|A(a),A(a2) -> float(a+a2)
|A(a),B(b) -> float(a) + b
|B(b),B(b2) -> b+b2
|B(b),A(a) -> float(a) + b
这里的问题有两个:
A
值转换为float
,或者将B
值转换为int
正如@JohnPalmer在他的回答中所指出的,解决这两个问题的最明确的方法是使用模式匹配。它给了我一个错误“模式鉴别器'plus'没有定义”我应该更改什么?@jth41-有一些打字错误是固定的
type number = A of int | B of float;;
let plus x1:number x2:number = (number x1) + (number x2);;