英語版
このページの英語版を見る

dmd.arrayop

a[] = b[] + c[] などの配列操作を実装する。

仕様 配列操作

Authors:

ソース arrayop.d

bool isArrayOpValid(Expression e);
配列に[]が使われていないことを確認する。
Expression arrayOp(BinExp e, Scope* sc);

Expression arrayOp(BinAssignExp e, Scope* sc);
object.arrayOp!(tiargs)(args)を呼び出し、配列操作式を構築する。
逆ポーランド記法(RPN)を使って、オペランドの型と操作をtiargsにエンコードし、優先順位を保持する。 単項演算は "u"を前置する(例:"u~")。 オペランド値(スライスまたはスカラー)を引数として渡す。
のスカラー式の部分木は、呼び出す前に評価される。 eのスカラー式サブツリーは を呼び出す前に評価される。これは有効な評価順序である。 これは有効な評価順序である。 これは有効な評価順序である。
bool isArrayOpImplicitCast(TypeDArray tfrom, TypeDArray tto);
arrayOpテンプレートは、いくつかの暗黙のキャストを行うことができる。
Parameters:
TypeDArray tfrom から変換する型
TypeDArray tto への型変換
Returns:
arrayOpで実行できる場合は真
@safe bool isUnaArrayOp(EXP op);
式が単項配列opであるかどうかをテストする。
@safe bool isBinArrayOp(EXP op);
式がバイナリ配列opであるかテストする。
@safe bool isBinAssignArrayOp(EXP op);
式がバイナリ代入配列opであるかテストする。
bool isArrayOpOperand(Expression e);
オペランドが有効な配列opオペランドであるかどうかを調べる。
ErrorExp arrayOpInvalidError(Expression e);
無効な配列操作に関するエラーメッセージを表示する。
Parameters:
Expression e 式が無効な配列操作であるかどうかを調べる。
Returns:
ErrorExpのインスタンス