Julgue o item seguinte, com base nos conceitos de linguagem ...
Julgue o item seguinte, com base nos conceitos de linguagem de programação Ruby e Java.
Em Ruby, o resultado da execução do comando
%q{one\ntwo\n#{ 1 + 2 }} é “one\ntwo\n3”.
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão com base nos conceitos de linguagem de programação Ruby.
A alternativa correta é: E - errado
No enunciado, temos a expressão em Ruby: %q{one\ntwo\n#{ 1 + 2 }}
, e a questão propõe que o resultado desta expressão seja "one\ntwo\n3".
Para entender por que a alternativa é errada, precisamos revisar o significado do operador %q
em Ruby.
Em Ruby, o operador %q
é utilizado para criar strings literais, similarmente ao uso de aspas simples. Isso significa que a expressão dentro do %q
não faz interpolação de variáveis ou expressões. Ela funciona de maneira semelhante a uma string delimitada por aspas simples (' '
).
Portanto, a expressão %q{one\ntwo\n#{ 1 + 2 }}
não interpreta o \n
como uma nova linha, nem a interpolação #{ 1 + 2 }
é avaliada. Em vez disso, ela trata tudo como uma string literal.
O resultado correto da expressão %q{one\ntwo\n#{ 1 + 2 }}
é literalmente "one\ntwo\n#{ 1 + 2 }".
Vamos agora justificar por que a alternativa certa está incorreta:
- Alternativa C: A sugestão de que a string resultante seja "one\ntwo\n3" está errada porque a interpolação
#{ 1 + 2 }
não é avaliada dentro de uma string criada com%q
. Como mencionado,%q
trata a string como uma expressão literal.
Espero que essa explicação tenha esclarecido a lógica por trás da expressão em Ruby. Se precisar de mais alguma ajuda, estou à disposição!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Certo! O resultado da execução do comando em Ruby é de fato "one\ntwo\n3". Esse comando cria uma string usando que é uma forma alternativa de criar uma string de forma literal, onde o texto dentro das chaves não sofre interpolação de variáveis, então é tratado literalmente como uma sequência de caracteres e não como uma expressão a ser avaliada.
Errado.
No Ruby, o comando %q{} é usado para criar uma string delimitada por chaves {} sem a necessidade de escapar caracteres especiais. No entanto, o \n dentro dessa estrutura %q{} não será interpretado como uma quebra de linha literal, mas sim como os caracteres \ e n como texto.
Portanto, ao executar %q{one\ntwo\n#{ 1 + 2 }} em Ruby, o resultado será literalmente "one\\ntwo\\n#{ 1 + 2 }". Isso significa que a string resultante conterá os caracteres \n como texto normal e a interpolação #{ 1 + 2 } será tratada como uma expressão Ruby e substituída pelo seu resultado, que é 3.
Assim, o resultado final da execução será "one\\ntwo\\n3", não interpretando as quebras de linha como linhas reais.
não conheço Ruby mas Java e a questão fala baseado na linguagem Ruby e Java, como nunca vi essa sintaxe em java marquei Errado
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo