Fehler, Irrtümer, Fragen - Seite 2870

 
Roman:

Was hat das mit Vorlagen zu tun?
Wenn die Verwendungssyntax nicht für eine Vorlage gilt, in diesem Fall.

Die Entwickler haben die Beschreibung des Typs mit einem Beispiel in diesen Abschnitt gestellt. Lesen Sie bis zum Ende und Sie werden diesen Absatz und dieses Beispiel finden

 
A100:

Was ist der Unterschied zwischen (1) und (2)? Liebe Entwickler - vielleicht hat Roman recht und typename gibt jetzt type zurück?

Ich denke, dies ist eher ein Makro

 
A100:

Die Entwickler haben eine Beschreibung des Typennamens mit einem Beispiel in diesen Abschnitt gestellt. Lesen Sie bis zum Ende und Sie werden diesen Absatz und dieses Beispiel finden

In diesem Abschnitt der Dokumentation geht es nämlich um Vorlagen.
Schablonen haben mit diesen Beispielen nichts zu tun.
typename ist dasselbe wie 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:

Sie sollten wissen, dass dieser Abschnitt der Dokumentation sich mit Vorlagen befasst.
Templates haben nichts mit diesen Beispielen zu tun.
typename ist wie sizeof

In der Dokumentation heißt es:Um generische Möglichkeiten zur Behandlung verschiedener Datentypen zu schaffen, solltedas Schlüsselworttypenameverwendet werden, um den Typ des Arguments als String zu erhalten.

Wo steht das Wort typename in diesem Satz? Ich kann es nicht sehen? Ja... Das Beispiel der Vorlage. Erwarten Sie von den Entwicklern, dass sie Ihnen Beispiele für alle Gelegenheiten geben?

 
A100:

In der Dokumentation steht:Um universelle Möglichkeiten für die Arbeit mit verschiedenen Datentypenzu schaffen, müssen Sie das Schlüsselwort typename verwenden, um den Typ des Arguments als Zeichenkette zu erhalten.

Wo steht das Wort typename in diesem Satz? Ich kann es nicht sehen? Ja... Das Beispiel der Vorlage. Erwarten Sie von den Entwicklern, dass sie Ihnen Beispiele für alle Gelegenheiten geben?

In diesem Fall erstellen wir nichts, wir holen uns nur die Namen aus den Typen.
Entfernen Sie sich von Vorlagen. Und Dokumentation für die Vorlage.
Siehst du das Ergebnis des Drucks? Was brauchen Sie noch?
Ehrlich gesagt, verstehe ich Ihr Missverständnis nicht.

 
Roman:

In diesem Fall erstellen wir nichts, sondern wir holen uns die Namen von den Typen.
Entfernen Sie sich von Vorlagen. Und die Dokumentation für die Vorlage.
Siehst du das Ergebnis des Drucks? Was brauchen Sie noch?

Siehst du das Ergebnis dieses Drucks?

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

Ergebnis: ushort

Ist "ushort" also ein Typ? Und dieser Eintrag ist Ihrer Meinung nach normal?

void OnStart()
{
    "ushort" ch = '+';
}
Nein, es handelt sich nicht um einen Typ, sondern um eine Zeichenkette. Print druckt keine Typen - PrintFormat verfügt nicht über ein solches Format. Er druckt Zeichenketten, Zahlen und Symbole, aber keine Typen
 
A100:

Können Sie das Ergebnis dieses Drucks sehen?

Ergebnis: ushort

Also, ist "ushort" ein Typ? Und ein solcher Eintrag ist Ihrer Meinung nach normal?

))) Du erstaunst mich.

Sie haben ein String-Literal an den Drucker übergeben und es erhalten.
Um den Namen eines Typs zu erhalten, verwenden Sie das Schlüsselwort typename("ushort")
, um den Namen des Typs string zu erhalten

. Sie übergeben type selbst typename(string) und erhalten dass elbe.

Eigentlich ist es ein Fehler in der Dokumentation, dass sie nicht beschreibt, wie das Schlüsselworttypename zu behandeln ist.
Eine Beschreibung für sizeof undtypename gibt es nur für Muster.
Obwohl ich oben ein Beispiel gegeben habe, dasstypename den Typnamen erhält, genauso wiesizeof die Größe erhält .

 
Roman:

)))) Sie überraschen mich.

Sie haben ein String-Literal an den Drucker übergeben, und Sie haben es erhalten.

Sie übergeben also auch ein String-Literal zum Drucken

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

Ergebnis: ushort

Wenn Sie nach all den Erklärungen und dem Studium der Dokumentation anderer Meinung sind, ist das Ihr Problem:

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

Sie haben also ein String-Literal an die Funktion print

Ergebnis: ushort

Wenn Sie nach dem Lesen aller Erklärungen und Unterlagen anderer Meinung sind, ist das Ihr Problem.

Habe ich behauptet, dass eine Zeichenkette zurückgegeben wird?
Sie sind es, der sich an String und Print() festgebissen hat
Und die Ausgabe ist kein String-Literal, sondern ein Integer-Zeichen vom Typ ushort.
Wie auch immer, nicht mein Problem in Ihrer Erkenntnis.

 
Roman:

Die Ausgabe ist kein String-Literal, sondern eine Ganzzahl vom Typ ushort.

Die Ausgabe ist genau ein String-Literal. Hier - gefundener direkter Beweis - gibt es überhaupt keinen Druck:

int f()
{
    return typename('+'); //warning: implicit conversion from 'string' to 'number'
}
Versuchen Sie nun, das Gegenteil zu beweisen - auch ohne Abdruck! Beweisen Sie es natürlich mit einem Beispiel, nicht mit Fantasien wie "das steht nicht in der Dokumentation - ich weiß es besser".