Errori, bug, domande - pagina 2870

 
Roman:

Cosa ha a che fare questo con i modelli?
Se la sintassi d'uso non è per un template, in questo caso.

Gli sviluppatori hanno messo la descrizione del typename con un esempio in questa sezione. Leggete fino alla fine e troverete questo paragrafo e questo esempio

 
A100:

Qual è la differenza tra (1) e (2)? Cari sviluppatori - forse Roman ha ragione e ora typename restituisce il tipo?

Penso che questo sia più vicino a una macro

 
A100:

Gli sviluppatori hanno messo una descrizione del typename con un esempio in questa sezione. Leggete fino alla fine e troverete questo paragrafo e questo esempio

Vedete, quella sezione della documentazione riguarda i modelli.
I template non hanno niente a che fare con questi esempi.
typename è lo stesso che ottenere 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:

Comprendete che quella sezione della documentazione riguarda i modelli.
I template non hanno nulla a che fare con questi esempi.
typename è come ottenere sizeof

La documentazione dice:per creare modi generici di gestire diversi tipi di dati, la parola chiavetypename dovrebbeessere usataper ottenere il tipo di argomento come una stringa.

Dov'è la parola typename in questa frase? Non lo vedo? Sì... L'esempio di template. Vi aspettate che gli sviluppatori vi diano esempi per tutte le occasioni?

 
A100:

La documentazione dice:Per creare modi universali di lavorare con diversi tipi di dati, dovete usare la parola chiave typenameper ottenere il tipo dell'argomento come una stringa.

Dov'è la parola typename in questa frase? Non lo vedo? Sì... L'esempio di template. Vi aspettate che gli sviluppatori vi diano esempi per tutte le occasioni?

Non creiamo nulla in questo caso, otteniamo solo i loro nomi dai tipi.
Allontanatevi dai modelli. E la documentazione per il modello.
Vedete il risultato della stampa? Di cos'altro avete bisogno?
Onestamente, non capisco il suo malinteso.

 
Roman:

In questo caso, non creiamo nulla, otteniamo i loro nomi dai tipi.
Allontanatevi dai modelli. E la documentazione per il modello.
Vedete il risultato della stampa? Di cos'altro avete bisogno?

Vedete il risultato di questa stampa?

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

Risultato: ushort

Quindi, "ushort" è un tipo? E questa voce è normale secondo voi?

void OnStart()
{
    "ushort" ch = '+';
}
No, non è un tipo, è una stringa. Print non stampa i tipi - PrintFormat non ha un tale formato. Stampa stringhe, numeri, simboli, ma non tipi
 
A100:

Puoi vedere il risultato di questa stampa?

Risultato: ushort

Quindi ora: "ushort" è un tipo? E una tale voce è normale secondo voi?

))) Mi stupisci.

Avete passato una stringa letterale alla stampante e l'avete ottenuta.
Per ottenere un nome di tipo si usa la parola chiave typename("ushort")
ottenere il nome del tipo string

Si passa il tipo stesso typename(string), si ottiene la stessa cosa.

In realtà è un bug nella documentazione che non descrive come gestire la parola chiavetypename.
C'è una descrizione per sizeof etypename solo per i modelli.
Anche se ho dato un esempio sopra chetypename ottiene il nome del tipo, proprio comesizeof ottiene la dimensione .

 
Roman:

)))) mi sorprendi.

Avete passato una stringa letterale alla stampante e l'avete ottenuta.

Quindi si passa anche un letterale di stringa da stampare

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

Risultato: ushort

Se pensate il contrario dopo tutte le spiegazioni e lo studio della documentazione, è un problema vostro:

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

Quindi avete passato un letterale di stringa alla stampa

Risultato: ushort

Se pensate diversamente dopo aver letto tutte le spiegazioni e la documentazione, è un problema vostro.

Ho detto che restituisce una stringa?
Sei tu che ti sei fissato su stringa e Print()
E l'output non sarà un letterale di stringa, ma il carattere intero di tipo ushort.
Comunque anche, non è un mio problema nella vostra cognizione.

 
Roman:

L'output non sarà un letterale di stringa, ma il carattere intero di tipo ushort.

L'output sarà esattamente un letterale di stringa. Qui - trovata la prova diretta - non c'è nessuna stampa:

int f()
{
    return typename('+'); //warning: implicit conversion from 'string' to 'number'
}
Ora provate a dimostrare il contrario - anche senza un'impronta! Naturalmente, dimostratelo con un esempio, non con fantasie come "non è quello che c'è scritto nella documentazione - io lo so bene".