エラー、バグ、質問 - ページ 2870

 
Roman:

テンプレートとどう関係があるのですか?
使用構文がテンプレート用でない場合、この場合。

開発者は、このセクションで、例題を含むtypenameの記述を行いました。最後まで読むと、この段落とこの例が出てきます。

 
A100:

(1)と(2)はどう違うのですか?開発者の皆様へ - もしかしたらRomanの 言う通り、typenameはtypeを返すようになったのでしょうか?

これはマクロに近いと思います

 
A100:

開発者は、このセクションに、例を挙げてtypenameの説明を載せています。最後まで読むと、この段落とこの例が出てきます。

ほら、ドキュメントのその部分は、テンプレートについてです。

typenameはsizeofを取得するのと同じです。

#define   A '+'

void OnStart()
{
   Print(sizeof(A));
   Print(typename(A));
   Print(sizeof("string"));
   Print(typename("string"));
}
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  2
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  ushort
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  12
2020.10.09 02:20:21.917 TestScript (MNQZ20,M1)  string
 
Roman:

ドキュメントのそのセクションは、テンプレートに関するものであることを理解してください。

typename は sizeof を取得するようなもので、テンプレートはこれらの例とは関係ありません。

ドキュメントによると、「異なるデータ型を 扱う汎用的な方法を作るには、引数の型を文字列として 取得するキーワードtypenameを 使用する必要があります。

この文章のどこにtypenameという単語があるのでしょうか?見えていない?そうですね...テンプレートの例です。デベロッパーがあらゆる場面での例を示してくれるとでも思っているのでしょうか?

 
A100:

ドキュメントによると、「異なるデータ型を 扱う普遍的な方法を作るには、typenameというキーワードを使って引数の型を文字列として 取得する必要があります。

この文章のどこにtypenameという単語があるのでしょうか?見えていない?そうですね...テンプレートの例です。デベロッパーは、あらゆる場面で例を挙げてくれるとでも思っているのでしょうか?

この場合、何も作成せず、型から名前を取得するだけです。
テンプレートから離れよう。テンプレートのドキュメントも。
プリントの仕上がりがわかりますか?他に必要なものはありますか?
正直なところ、あなたの誤解は理解できない。

 
Roman:

この場合、何も作成せず、型から名前を取得します。
テンプレートから離れよう。そして、そのテンプレートのドキュメント。
プリントの仕上がりがわかりますか?他に必要なものはありますか?

このプリントの仕上がりがわかりますか?

void OnStart()
{
    Print("ushort");
}

結果: ushort

では、"ushort "は型なのでしょうか?そして、このエントリーは、あなたによると普通なのですか?

void OnStart()
{
    "ushort" ch = '+';
}
いいえ、それは型ではなく、文字列です。Printはタイプを印刷しません -PrintFormatは そのようなフォーマットを持ちません。文字列、数字、記号は表示されるが、型は表示されない
 
A100:

このプリントの仕上がりがわかるでしょうか?

結果: ushort

さてさて、「ushort」は型なのでしょうか?そして、そのようなエントリーは、あなたによると普通なのですか?

))) 君には驚かされるよ。

プリンターに文字列リテラルを渡して、それを取得しました。
型の名前を得るにはキーワード typename("ushort")
型の 名前を得るstring

型そのものを渡すtypename(string) でも同じものが得られます。

実は、typename キーワードの扱い方が書かれていないのは、ドキュメントのバグなんです。
sizeofとtypenameについては、パターンのみ 記述があります。
上ではtypenameが型名を取得 する例を挙げましたが、sizeofがサイズを 取得するのと同じように、typenameが型名を 取得します。

 
Roman:

))))驚かせてくれますね。

プリンターに文字列リテラルを渡すと、それが表示されました。

つまり、文字列リテラルを渡して印刷することもできます。

void OnStart()
{
    Print(typename('+'));
}

結果: ushort

説明を受けて、ドキュメントを勉強して、そう思わないのであれば、それはあなたの問題です。

void OnStart()
{
    Print(short); //Error - потому что принт типы не печатает
}
 
A100:

つまり、文字列リテラルをprintに渡したわけです。

結果: ushort

すべての説明とドキュメントを読んだ上で、そう思わないのであれば、それはあなたの問題です。


文字列とPrint()に釣られたのはあなたです
そして出力は文字列リテラルではなく、文字整数型ushortに なります。
とにかくも、あなたの認知では私の問題ではありません。

 
Roman:

出力は文字列リテラルではなく、文字列整数型ushortに なります。

出力は正確に文字列リテラルに なります。ここに-直接的な証拠が見つかった-ここには全く印刷がないのです。

int f()
{
    return typename('+'); //warning: implicit conversion from 'string' to 'number'
}
今度は、その反対を証明してみてください。当然、「ドキュメントに書いてあることと違うよ〜、私の方が詳しいよ〜」みたいな妄想ではなく、実例で証明しましょう。