gpt4 book ai didi

f# - 使用强制 F# 创建具有自定义类型的 "plus"函数

转载 作者:行者123 更新时间:2023-12-02 04:47:07 24 4
gpt4 key购买 nike

我目前有一个特殊类型,可以是 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);;

这里的问题是双重的:

  1. 您不能使用具有单个值(在本例中为 A 和 B)的可区分联合案例,就好像您拥有该值一样。将每种情况视为一个具有一个值的类(这就是它在字节码中的表示方式)。在尝试使用它之前,您需要从类中取出值。

  2. F# 不允许隐式转换。这意味着一旦从案例中获取值,就需要将它们转换为通用类型。在这种情况下,您需要将 A 值转换为 float 或将 B 值转换为 int .

正如@JohnPalmer 在他的回答中指出的那样,解决这两个问题的最明确方法是使用模式匹配。

关于f# - 使用强制 F# 创建具有自定义类型的 "plus"函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com