Errores, fallos, preguntas - página 2870

 
Roman:

¿Qué tiene que ver esto con las plantillas?
Si la sintaxis de uso no es para una plantilla, en este caso.

Los desarrolladores han puesto la descripción del nombre del tipo con un ejemplo en esta sección. Lea hasta el final y encontrará este párrafo y este ejemplo

 
A100:

¿Cuál es la diferencia entre (1) y (2)? Estimados desarrolladores: ¿tal vez Roman tenga razón y ahora typename devuelva el tipo?

Creo que esto está más cerca de una macro

 
A100:

Los desarrolladores han puesto una descripción del nombre del tipo con un ejemplo en esta sección. Lea hasta el final y encontrará este párrafo y este ejemplo

Verás, esa sección de la documentación es sobre las plantillas.
Las plantillas no tienen nada que ver con estos ejemplos.
typename es lo mismo que obtener 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:

Entiende que esa sección de la documentación es sobre las plantillas.
Las plantillas no tienen nada que ver con estos ejemplos.
typename es como obtener sizeof

La documentación dice:Para crear formas genéricas de manejar diferentes tipos de datos, se debeutilizar la palabra clavetypenamepara obtener el tipo del argumento como una cadena.

¿Dónde está la palabra typename en esta frase? ¿No lo veo? Sí... El ejemplo de la plantilla. ¿Espera que los promotores le den ejemplos para todas las ocasiones?

 
A100:

La documentación dice:Para crear formas universales de trabajar con diferentes tipos de datos, debe utilizar la palabra clave typenamepara obtener el tipo del argumento como una cadena.

¿Dónde está la palabra typename en esta frase? ¿No lo veo? Sí... El ejemplo de la plantilla. ¿Esperas que los desarrolladores te den ejemplos para todas las ocasiones?

En este caso no creamos nada, sólo obtenemos sus nombres de los tipos.
Aléjate de las plantillas. Y la documentación de la plantilla.
¿Ves el resultado de la impresión? ¿Qué más necesitas?
Sinceramente, no entiendo su malentendido.

 
Roman:

En este caso, no creamos nada, obtenemos sus nombres de los tipos.
Aléjate de las plantillas. Y la documentación de la plantilla.
¿Ves el resultado de la impresión? ¿Qué más necesitas?

¿Ves el resultado de esta impresión?

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

Resultado: ushort

Entonces, ¿es "ushort" un tipo? ¿Y esta entrada es normal según usted?

void OnStart()
{
    "ushort" ch = '+';
}
No, no es un tipo, es una cadena. Imprimir no imprime tipos - PrintFormat no tiene ese formato. Imprime cadenas, números, símbolos, pero no tipos
 
A100:

¿Puedes ver el resultado de esta impresión?

Resultado: ushort

Y ahora: ¿es "ushort" un tipo? ¿Y tal entrada es normal según usted?

))) Me sorprendes.

Has pasado una cadena literal a la impresora y la has obtenido.
Para obtener un nombre de tipo se utiliza la palabra clave typename("ushort")
se obtiene el nombre del tipo string

Se pasa al tipo mismo typename(string), se obtiene lo mismo.

En realidad es un error de la documentación que no describe cómo manejar la palabra clavetypename.
Hay una descripción para sizeof ytypename sólo para los patrones.
Aunque ya di un ejemplo más arriba de quetypename obtiene el nombre del tipo, al igual quesizeof obtiene el tamaño .

 
Roman:

)))) me sorprende.

Has pasado una cadena literal a la impresora, y lo has conseguido.

Así que también se pasa un literal de cadena para imprimir

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

Resultado: ushort

Si después de todas las explicaciones y de estudiar la documentación piensas lo contrario, es tu problema:

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

Así que has pasado una cadena literal a la impresión

Resultado: ushort

Si después de leer todas las explicaciones y la documentación piensas lo contrario, es tu problema.

¿Acaso he afirmado que devuelve una cadena?
Eres tú el que se ha enganchado a la cadena y a Print()
Y la salida no será un literal de cadena, sino el carácter de tipo entero ushort.
De todos modos también, no es mi problema en su cognición.

 
Roman:

La salida no será un literal de cadena, sino un entero de tipo ushort.

La salida será exactamente una cadena literal. Aquí - se ha encontrado una prueba directa - no hay ninguna huella en absoluto:

int f()
{
    return typename('+'); //warning: implicit conversion from 'string' to 'number'
}
Ahora intente demostrar lo contrario - ¡también sin huella! Naturalmente, demuéstralo con un ejemplo, no con fantasías como "eso no es lo que dice la documentación, yo lo sé mejor".