2017-10-07 77 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類型之外,其他都不適用)。