Eyes, JAPAN Blog > 言語仕様のTupleとstd.typecons.Tuple

言語仕様のTupleとstd.typecons.Tuple

mima

この記事は1年以上前に書かれたもので、内容が古い可能性がありますのでご注意ください。


D言語には、言語仕様としてのTupleとライブラリとしてのstd.typecons.Tupleがあって、色々と紛らわしいです。
ので、ここで少し整理してみます。


言語仕様としてのTuple

D言語では、テンプレートの可変長引数がTupleを生成します。
ここが詳しいですが、特徴を挙げると、

  • コンパイル時のみ使える
  • スライス演算ができる
  • 型や値やエイリアスを扱うことができる

といった感じです。
コンパイル時のみ使えるという特徴は厄介で、関数の戻り値としてTupleを返せないことなどを意味します。
後述のstd.typecons.Tupleと紛らわしいので、名前を変えるべきなんじゃないかと思っています。

std.typecons.Tuple

ライブラリのTupleです。ここが詳しいですが、特徴は

  • 実行時に使える
  • スライス演算は使えない(スライスはできる)
  • 値のみを扱うことができる

こちらの方のTupleは、他の言語のTupleと同じで、無名の構造体のようなものです。
関数の戻り値として返すことができます。
Tupleの要素には普通に[i]のような形でアクセスできますが、iはコンパイル時に計算できる値である必要があります。


このような感じです。やはり、名前を変えるのがいいんじゃないかと思えます。

担当:美馬(簡潔さは言語の魂です!)

Comments are closed.