2017-10-07 86 views
0

现在tuple只是record在SML,我想:记录和元组之间的转换?

enter image description here

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

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

我的问题是,为什么SML不提供这样的转换?(因为这些转换是在C相当频繁++)

回答

1

元组是记录与会员到n命名为1。也就是说,三元组元组(a, b, c)确实是一个记录{1 = a, 2 = b, 3 = c}。所以不需要在元组和记录之间进行隐式转换,因为它们已经是同一件事了。

现在你所定义的函数将一个成员xyz记录,并传递给它一个记录与会员123。这不起作用。为此,需要在具有不同成员名称的记录之间进行隐式转换,这似乎是一个非常糟糕的主意。

(因为这些转换是在C相当频繁++)

有在C++无关结构或类具有不同成员(或甚至相同的构件)之间的隐式转换。要做到这一点,你需要一个reinterpret_cast(或在地址上投射出一个C风格的指针),这既不常见也不是一个好主意(除了POD类型之外,其他都不适用)。