Rubi Terminologia Pergunta: Este é um rubi declaração, definição e atribuição, tudo ao mesmo tempo?

StackOverflow https://stackoverflow.com/questions/672135

Pergunta

Se eu disser:

x = "abc"

este parece ser uma declaração, definição e atribuição, tudo ao mesmo tempo, independentemente de eu ter dito nada sobre x no programa antes.

É este correto?

Eu não tenho certeza o que a terminologia correta é em Ruby para declarações, definições e trabalhos práticos ou se há mesmo uma distinção entre essas coisas por causa da tipagem dinâmica em Ruby.

@tg: No que diz respeito o seu ponto # 2: mesmo se x existia antes do x = declaração "abc", você não pode chamar o x = "abc" declaração a / re-definição definição

Foi útil?

Solução

  1. Declaração:. Não
    Não faz sentido falar sobre declarando variáveis ??em Ruby, porque não há nada análogo a uma declaração nas línguas. Línguas projetados para compiladores têm declarações porque o compilador precisa saber antecipadamente como grandes tipos de dados são e como acessar diferentes partes deles. por exemplo , se eu digo no C:.

    int *i;
    

    então o compilador sabe que em algum lugar há algum conjunto memória reservado para i, e é tão grande quanto ele precisa ser para manter um ponteiro para um int. Eventualmente, o vinculador irá ligar todas as referências a i juntos, mas pelo menos o compilador sabe que está lá fora em algum lugar.

  2. Definição:. Provavelmente
    Um definição normalmente definido um valor inicial para alguma coisa (pelo menos nas linguagens compiladas familiares). Se x não existia antes da instrução x = "abc", então eu acho que você poderia chamar isso de uma definição, uma vez que é quando Ruby tem de atribuir um valor ao símbolo x.

    Novamente, porém, definição é um termo específico que as pessoas normalmente usam para distinguir a atribuição inicial, estática de um valor a alguma variável da declaração de que variável. Em Ruby, você não tem esse tipo de declaração. Você normalmente apenas dizer que uma variável é definido se ele foi atribuído um lugar valor em seu escopo atual, e você diz que é indefinido , se ele não tem.

    Você normalmente não falar sobre isso ter um definição , porque em Ruby que apenas equivale a atribuição . Não há nenhum contexto especial que justifique dizendo definição como existe em outros idiomas.

    O que nos leva a ...

  3. Assignment:. Sim
    Você pode definitivamente chamar isso de um atribuição , uma vez que está atribuindo um valor ao símbolo x. Eu não acho que ninguém vai discordar disso.

Outras dicas

Muito bonito. E se, na linha seguinte, você faz:

x = 1

Então você acabou de re-definida -lo, bem como lhe é atribuído (sua agora um inteiro, não uma string). tipagem pato é muito diferente do que você provavelmente está acostumado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top