gpt4 book ai didi

带有多个参数的 Reasonml 类型,错误异常失败 ("nth")

转载 作者:行者123 更新时间:2023-12-01 00:25:34 41 4
gpt4 key购买 nike

编译以下代码时出现错误

type shape =
| Circle int
| Square int
| Rectangle int int;

let myShape = Circle 10;

let area =
switch myShape {
| Circle r => float_of_int (r * r) *. 3.14
| Square w => float_of_int (w * w)
| Rectangle w h => float_of_int (w * h)
};

Js.log area;

Fatal error: exception Failure("nth")
ninja: build stopped: subcommand failed.



当我更改 Rectangle元组(int,int),它的工作原理
type shape =
| Circle int
| Square int
| Rectangle (int, int);

let myShape = Circle 10;

let area =
switch myShape {
| Circle r => float_of_int (r * r) *. 3.14
| Square w => float_of_int (w * w)
| Rectangle (w, h) => float_of_int (w * h)
};

Js.log area;

数据构造函数不能有多个参数吗?

谢谢

问题已提交至 buckelscript https://github.com/BuckleScript/bucklescript/issues/1822

最佳答案

两种变体都是完全有效的原因代码。您可以拥有带有多个参数的构造函数,而且您做得对。显然,问题出在 Js.log函数,这是一种魔术函数,并且使用 n 元构造函数,魔术失败了。

因此,我的建议是 (i) 在 bucklescript 错误跟踪器中提交问题,并且 (ii) 不要使用魔法 Js.log函数,而是派生或编写您自己的打印机函数并使用它。

关于带有多个参数的 Reasonml 类型,错误异常失败 ("nth"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45276858/

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