¿Puedo deshabilitar la impresión de listas de enteros pequeños como cadenas en el shell de Erlang?
Respuesta
Puede desactivar este tipo de comportamiento con shell:strings/1
function comenzando con Erlang R16b.
Solo recuerde que esta es una opción global para todos los shells de nodos, y que podría ser una buena idea volver atrás cuando termine de reproducirse el shell en los nodos vivos más largos.
No sé si es posible cambiar el comportamiento predeterminado del shell, pero al menos puede formatear su salida correctamente, usando io:format.
Aquí se muestra un ejemplo:
1> io:format("~p~n", [[65, 66, 67]]).
"ABC"
ok
2> io:format("~w~n", [[65, 66, 67]]).
[65,66,67]
ok
Y puesto que el depósito es sólo para experimentar/mantenimiento, io:format()
debería ser al menos suficiente para su aplicación real. Quizás también deba considerar escribir su propio método de formato/impresión, p. formatPerson()
o algo así, que formatea todo muy bien.
El problema es que la cadena no es un tipo en Erlang. Una cadena es solo una lista de enteros, por lo que no hay forma de que el shell distinga una cadena imprimible de una lista genérica. No sé si esta respuesta a su pregunta.
Intenta ingresar '[65,66,67] .' y' [1,2,3] .' a tu caparazón ... – Zed
@Zed: era consciente de eso. Pero creo que he entendido mal la pregunta. Ahora tengo lo que está tratando de hacer. Gracias. –
Tiendo a hacerlo anteponiendo un átomo a mi lista en el caparazón.
por ejemplo:
Eshell V5.7.4 (abort with ^G)
1> [65,66,67].
"ABC"
2> [a|[65,66,67]].
[a,65,66,67]
también podría ser [a, 65,66,67], por supuesto. pero [a | fun_that_returns_a_list()] imprimirá "lo correcto (ish) la mayor parte del tiempo"
No, no hay forma de deshabilitarlo. La mejor alternativa que encuentro es imprimir explícitamente el valor en la consulta (con io:format
) o después de hacerlo: io:format("~w\n", [v(-1)])
.
No creo que pueda evitarlo. Anular un átomo parece un error: altera la cadena original.
Normalmente utilizo listas: flatten (String) para forzarlo a una cadena, especialmente el valor de retorno de io_lib: format() no siempre se imprime como una cadena. Usar listas: aplanar() lo convierte en uno.
utilizo el siguiente "estilo C":
sprintf(Format) ->
sprintf(Format, []).
sprintf(Format, Args) ->
lists:flatten(io_lib:format(Format, Args)).
As of Erlang/OTP R16B, puede utilizar la función shell:strings/1 convertir esta encendido o apagado. Tenga en cuenta que también afecta a la impresión de las cosas que realmente están destinados a ser cadenas, tales como "foo"
en el siguiente ejemplo:
1> {[8,9,10], "foo"}.
{"\b\t\n","foo"}
2> shell:strings(false).
true
3> {[8,9,10], "foo"}.
{[8,9,10],[102,111,111]}
- 1. convirtiendo la lista de cadenas en listas de números enteros
- 2. Cómo convierto cadenas en listas de enteros en Haskell
- 3. Convertir cadenas binarias en listas de enteros usando Python
- 4. Erlang: ¿cómo implementar la comprensión de listas de Erlang?
- 5. Bonita impresión en el shell MongoDB como predeterminado
- 6. Erlang: aplanamiento de una lista de cadenas
- 7. Impresión inteligente de números enteros en fortran90
- 8. Delimitación de cadenas en Erlang
- 9. Mapeo de cadenas en enteros
- 10. Cómo deshabilitar el botón de impresión QLPreviewController
- 11. Casting de la lista de cadenas de listas de listas de ints en python
- 12. Erlang shell problem
- 13. ¿Cómo se genera UTF-8 en el shell Erlang?
- 14. Deshabilitar la impresión de la consola en Log4js
- 15. En el shell de Erlang, ¿Cómo puedo leer automáticamente todos mis encabezados de registros de definición
- 16. ¿Puedo deshabilitar el cuadro de diálogo x de la página de impresión?
- 17. Uso de Logback y listas de impresión
- 18. Erlang: átomos o números enteros
- 19. caracteres de imprenta como enteros
- 20. Reordenar listas como listas de reproducción en el reproductor multimedia
- 21. Cómo convertir cadenas en enteros en Python?
- 22. ¿Deshabilitar el botón de inicio en la aplicación de Android para niños pequeños?
- 23. listas de Erlang: dropwhile resultado raro
- 24. Erlang shell desde un navegador?
- 25. Usando char para enteros pequeños (C++)
- 26. ¿Los bucles de Shell usan números enteros?
- 27. ¿Cómo concat listas en erlang sin crear listas anidadas?
- 28. Visualización de listas en depuración (o impresión en ventanas inmediatas)
- 29. ¿Cómo formatear una cadena plana con números enteros en erlang?
- 30. Configurar claves en shell erlang en linux
Sé sobre io: format y probablemente debería haberlo mencionado en la pregunta :) –
Esto es exactamente lo que estaba buscando cuando necesitaba imprimir una lista de enteros como una cadena. ¡Gracias! – Matt