は今tuple
がちょうどrecord
SMLであることを、私が試した:レコードとタプルの間の変換?
を、私はこのレコードはタプルを受け入れることができると思いますが、それはエラーを報告上記のコード。
タプルからレコードへ、レコードからタプルへの暗黙的な変換はありません(ただし、ここには投稿しませんでしたが、私は現地で実際に試しました)。 SMLは、このような変換を提供しない理由
私の質問はありますか?メンバーは1からnまでの名前と
は今tuple
がちょうどrecord
SMLであることを、私が試した:レコードとタプルの間の変換?
を、私はこのレコードはタプルを受け入れることができると思いますが、それはエラーを報告上記のコード。
タプルからレコードへ、レコードからタプルへの暗黙的な変換はありません(ただし、ここには投稿しませんでしたが、私は現地で実際に試しました)。 SMLは、このような変換を提供しない理由
私の質問はありますか?メンバーは1からnまでの名前と
タプルはレコードです(これらの変換は、C++でかなり頻繁にあるため)。つまり、3要素タプル(a, b, c)
は実際にはレコード{1 = a, 2 = b, 3 = c}
です。したがって、タプルとレコードの間の暗黙的な変換は、すでに同じものであるため、必要ありません。
今、あなたが定義した関数はメンバーx
、y
とz
で記録を取り、あなたはそれをメンバー1
、2
と3
でレコードを渡します。これは機能しません。これが機能するには、メンバー名の異なるレコード間の暗黙的な変換が必要になります。これは非常に悪い考えです。
(これらの変換は、C++でかなり頻繁にあるので)
異なるメンバー(または同一の部材)と無関係な構造体またはクラス間のC++には暗黙の変換はありません。これを行うには、reinterpret_cast
(またはアドレスにCスタイルのポインタをキャスト)する必要があります。これは一般的ではなく、良いアイデアでもありません(また、PODタイプ以外は使用できません)。