4

クラスのデータ メンバーに割り当てたいやや複雑な範囲があります。

chain(nicklist,
      map!(a=>format("%s%d", nicklist[0], a))(sequence!"n+1"()))

nicklistはただのstring[]. 通常、私の信頼できる友人autoはこれを処理するだけですが、データ メンバーの場合は型を宣言する必要があり、その型がどうあるべきか途方に暮れています。私はtypeof()それを取得するために使用する方法を理解しようとしましたが、実行時の引数が私を混乱させ、それを定式化する方法を理解することができませんでした.

(これは IRC ボットに使用されています。nicklist は、順番に試したいニックのリストです。ニックの衝突をすべて使い果たした後、番号が追加された最初のニックを試します)

4

1 に答える 1

6

これはうまくいきます:

typeof(chain(cast(string[])[], map!(a=>format("%s%d", "", a))(sequence!"n+1"()))) memberVar;

別の可能性は、関数でラップしてから、戻り値の型を取得して使用することです。

auto func(string[] nicklist)
{
    return chain(nicklist,
                 map!(a=>format("%s%d", nicklist[0], a))(sequence!"n+1"()));
}

ReturnType!func memberVar;

ReturnTypestd.traits にあります。

于 2012-04-16T08:34:56.777 に答える