Boa tarde,
Existe alguma diferença entre essas duas statements no que diz respeito a execução?
println "Hello World"
Para essa
(println "Hello World")
Grato,
Boa tarde,
Existe alguma diferença entre essas duas statements no que diz respeito a execução?
println "Hello World"
Para essa
(println "Hello World")
Grato,
(println "Hello World")
vai imprimir Hello World
e retornar o valor nil
println "Hello World"
não executa a função println, pela falta de parentêses. E é a mesma coisa que você rodar
println
"Hello World"
ou seja, println
vai retornar uma função (não vai executar, vai só retornar um "objeto" do tipo função, que em clojure é algo que implementa a interface clojure.lang.IFn
) e depois retornar a string Hello World
Se sua você tiver uma função com esse conteúdo
(defn minha-funcao []
println "Hello World")
e você chamar essa função (minha-funcao)
você vai receber apenas a string Hello World
como retorno. Note que você vai receber a string como retorno de chamar minha-funcao
e esse valor não foi imprimido, como seria caso tivesse parentêses ao redor de println "Hello World"
Entendi, obrigado meu amigo. Aproveitando gostaria de entender pq que de sempre ele imprimir nil no console. Tem algum motivo?
o console do clojure normalmente é chamado de repl
repl significa Read-Eval-Print loop
Ou seja, tudo que você digitar o repl vai ler o que você digitou, avaliar (executar) isso, imprimir o resultado que foi retornado
Se você digitar (println "Hello world")
ele vai ler isso, executar. Quando ele executa ele imprime na tela o Hello world
. E depois vai imprimir o retorno que a função println
deu, essa função sempre retorna nil
. Então ele imprime esse valor também.
Um outro exemplo é você digitar só "Hello world"
. O repl vai ler isso e executar. A execução não faz nada. E depois imprimir o retorno do que executou, que vai ser a string "Hello world"
. Então na sua tela vai aparecer só
Hello world
, enquanto no exemplo anterior foi
Hello world
nil