Ruby Terminologia Domanda:È questo un Rubino dichiarazione, definizione e assegnazione, tutti allo stesso tempo?

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

Domanda

Se io dico:

x = "abc"

questa mi sembra una dichiarazione, la definizione e l'assegnazione allo stesso tempo, indipendentemente dal fatto che non ho detto niente x il programma prima.

Questo è corretto?

Io non sono sicuro di quello che la terminologia corretta è in Ruby per le dichiarazioni, le definizioni e le trasferte o se c'è anche una distinzione tra queste cose a causa della tipizzazione dinamica in Ruby.

@tg:Per quanto riguarda il punto # 2:anche se x esisteva prima di x = "abc" dichiarazione", non è che puoi chiamare x = "abc" dichiarazione di una definizione/ridefinizione?

È stato utile?

Soluzione

  1. Dichiarazione: No.
    Non ha senso parlare di dichiarando le variabili in Ruby, perché non c'è niente di analogo a una dichiarazione in lingue.Lingue progettato per i compilatori sono dichiarazioni perché il compilatore deve conoscere in anticipo quanto grande i tipi di dati e di come accedere alle diverse parti di essi. ad es., se io dico in C:

    int *i;
    

    quindi il compilatore sa che da qualche parte c'è qualche memoria riservata per i, ed è grosso come deve essere quello di tenere un puntatore a int.Alla fine il linker gancio tutti i riferimenti per i insieme, ma almeno il compilatore sa che è là fuori da qualche parte.

  2. Definizione: Probabilmente.
    Un definizione in genere impostare un valore iniziale per qualcosa (almeno nella familiarità dei linguaggi compilati).Se x prima non c'era il x = "abc" l'istruzione, quindi credo che si potrebbe chiamare questa una definizione, dal momento che è quando Ruby è in grado di assegnare un valore al simbolo x.

    Di nuovo, però, definizione è un termine specifico che la gente in genere utilizzato per distinguere iniziale, statico assegnazione di un valore ad una variabile da tale variabile dichiarazione.In Ruby, non hai questo tipo di istruzione.In genere basta dire che una variabile è definito se è stato assegnato un valore da qualche parte nell'ambito della corrente, e voi dite che è undefined se non l'ha fatto.

    Di solito non si parla di avere un definizione, perché in Ruby che poco importi assegnazione.Non c'è contesto che avrebbe giustificato dicendo definizione come c'è in altre lingue.

    Che ci porta a...

  3. Assegnazione: Sì.
    Si può sicuramente chiamare questo un assegnazione, poiché è l'assegnazione di un valore per il simbolo x.Io non credo che nessuno sarà d'accordo con questo.

Altri suggerimenti

Più o meno. E se, sulla riga successiva, si fa:

x = 1

Quindi hai appena ridefinito di esso, così come assegnato (la sua ormai un intero, non una stringa). Duck typing è molto diverso da quello che probabilmente stai abituati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top