Sml 记录和元组之间的转换?
既然Sml 记录和元组之间的转换?,sml,Sml,既然tuple只是SML中的record,我尝试了: 上面的代码我希望这个记录可以接受元组,但是它报告了一个错误 所以,并没有从元组到记录以及从记录到元组的隐式转换(虽然我并没有在这里发布,实际上我已经在本地进行了尝试) 我的问题是为什么SML不提供这种转换?(因为这些转换在c++中非常频繁)元组是成员名为1到n的记录。也就是说,三元素元组(a,b,c)实际上是一个记录{1=a,2=b,3=c}。所以元组和记录之间不需要隐式转换,因为它们已经是相同的东西了 现在,您定义的函数将获取一条包含成员
tuple
只是SML中的record
,我尝试了:
上面的代码我希望这个记录可以接受元组,但是它报告了一个错误
所以,并没有从元组到记录以及从记录到元组的隐式转换(虽然我并没有在这里发布,实际上我已经在本地进行了尝试)
我的问题是为什么SML不提供这种转换?(因为这些转换在c++中非常频繁)元组是成员名为1到n的记录。也就是说,三元素元组
(a,b,c)
实际上是一个记录{1=a,2=b,3=c}
。所以元组和记录之间不需要隐式转换,因为它们已经是相同的东西了
现在,您定义的函数将获取一条包含成员x
、y
和z
的记录,并将一条包含成员1
、2
和3
的记录传递给它。这不管用。要使其工作,需要在具有不同成员名称的记录之间进行隐式转换,这似乎是一个非常糟糕的主意
(因为这些转换在c++中非常频繁)
<>在不同成员(甚至相同成员)的无关结构或类之间,C++中没有隐式转换。要做到这一点,您需要一个reinterpret\u cast
(或者在地址上强制转换一个C风格的指针),这既不常见也不是一个好主意(除了POD类型之外,任何东西都不能使用)