Julgue o item seguinte, com base nos conceitos de linguagem ...

Próximas questões
Com base no mesmo assunto
Q2467015 Programação

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”.

Alternativas

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