Tecnologia / Artigos / Erlang /
Mão na massa Erlang: Formatando e imprimindo

Cléber

* Date: 2014-12-05 12:34:56 * Modified: 2018-11-30 22:02:45 É, pois é. A gente costuma começar com o “Hello World” e eu simplesmente esqueci. Se bem que não faz diferença, mesmo, já que há anos eu não faço “Hello Worlds” para começar a aprender linguagens de programação… O que vamos ver hoje são os caracteres de formatação de io:format/2. ## ~n Imprime o caracter de “nova linha”. Lembre-se que em sistemas unix-like, “nova linha” é só “\n”. No Windows e derivados é “\r\n” e no Mac, se não me engano, é “\n\r”. Por isso é bom sempre usar ~n quando precisar quebrar linhas. ## ~c Imprime inteiros, convertendo-os para o equivalente em ASCII: ```erlang 4ᐳ io:format("[~c]~n", [$a]). [a] ok 5ᐳ io:format("[~10c]~n", [$a]). [aaaaaaaaaa] ok 6ᐳ io:format("[~10.1c]~n", [$a]). [ a] ok 7ᐳ io:format("[~-10.1c]~n", [$a]). [a ] ok 8ᐳ ``` (Lembre-se: $a já significa “o valor inteiro do caracter ‘a’ na tabela ASCII”. Na hora de imprimir, estamos “desconvertendo-o”). ## ~f Imprime floats: ```erlang 9ᐳ io:format("[~f]~n", [99.123456789]). [99.123457] ok 10ᐳ io:format("[~10f]~n", [99.123456789]). [ 99.123457] ok 11ᐳ io:format("[~15f]~n", [99.123456789]). [ 99.123457] ok 12ᐳ io:format("[~15.3f]~n", [99.123456789]). [ 99.123] ok 13ᐳ io:format("[~-15.3f]~n", [99.123456789]). [99.123 ] ok ``` Curiosamente, imprimir um float sem parâmetro nenhum só imprime até a sétima casa decimal… ## ~e Imprime float com aquela notação científica que eu nunca usei em lugar algum: ```erlang 17ᐳ io:format("[~e]~n", [99.123456789]). [9.91235e+1] ok ``` ## ~g Escolhe se é melhor formatar o número como se fosse um ~f ou como um ~e: ```erlang 18ᐳ io:format("[~g]~n", [99.123456789]). [99.1235] ok 19ᐳ io:format("[~g]~n", [9999999999999.123456789]). [1.00000e+13] ok ``` ## ~s Imprime como string: ```erlang 22ᐳ io:format("[~15s]~n", ["Teste"]). [ Teste] ok 23ᐳ io:format("[~-15s]~n", ["Teste"]). [Teste ] ok 25ᐳ io:format("[~-15.2s]~n", ["Teste"]). [Te ] ok ``` ## ~w Imprime com a sintaxe do Erlang: ```erlang 26ᐳ io:format("[~w]~n", ["Teste"]). [[84,101,115,116,101]] ok 27ᐳ io:format("[~w]~n", [10]). [10] ok 28ᐳ io:format("[~w]~n", [ᐸᐸ10ᐳᐳ]). [ᐸᐸ10ᐳᐳ] ok ``` Viu, na linha 26, como as strings em Erlang são apenas listas de caracteres? ## ~p Igual o ~w, mas, caso a linha fique muito grande, ele a quebra e formata da melhor maneira possível. ## ~B Imprime inteiros, mas você pode escolher a base: ```erlang 35ᐳ io:format("[~.2B]~n", [$a]). [1100001] ok 36ᐳ io:format("[~.16B]~n", [$a]). [61] ok 37ᐳ io:format("[~.8B]~n", [$a]). [141] ok 38ᐳ io:format("[~.10B]~n", [$a]). [97] ok ``` ## Resumo * Sempre use ~n quando quiser quebrar linhas, para que seu código seja portável. * Quando não precisar formatar nada, use io:put_chars/1.

Curti

52 visitantes curtiram esse Item.

Anterior: Erlang: recursão e guardas | Próximo: Dica rápida: spawn e self