记录和元组之间的转换?

时间:2017-10-07 11:36:14

标签: sml

现在tuple在SML中只是record,我试过了:

enter image description here

上面的代码我希望这条记录可以接受一个元组,但它报告错误。

所以,没有从元组到记录以及从记录到元组的隐式转换(虽然没有在这里发布,但我实际上已经在本地试过了。)

我的问题是为什么SML不提供这样的转换?(因为这些转换在c ++中非常频繁)

1 个答案:

答案 0 :(得分:1)

元组是名为1到n的成员的记录。也就是说,三元素元组(a, b, c)实际上是记录{1 = a, 2 = b, 3 = c}。因此,不需要在元组和记录之间进行隐式转换,因为它们已经是相同的东西。

现在,您定义的函数会对成员xyz进行记录,然后将成员1,{{1}的记录传递给它}和2。这不起作用。为了实现这一目标,需要在具有不同成员名称的记录之间进行隐式转换,这似乎是一个非常糟糕的主意。

  

(因为这些转换在c ++中非常频繁)

在不相关的结构或具有不同成员的类(甚至是相同的成员)之间,C ++中没有隐式转换。要做到这一点,你需要3(或在地址上投射C风格的指针),这既不常见也不好(除了POD类型之外不会使用任何东西) )。