2016-06-01 7 views
1

Wenn ich dieses Programm:Muss eine Variable, die auf eine andere Variable verweist, erneut ausgewertet werden, wenn sich diese Variable ändert?

BEGIN 
string = "Big Blue Hats." 
count = 1 
char = string[count] 
WHILE char NOT '.' 
    count = count + 1 
    #do I need to evaluate 'char = string[count]' again in order to update 'char'? 
ENDWHILE 
END 

Muss ich in der Schleife char = string[count], um für den Wert von char einschließen müssen char[2] verweisen aktualisiert werden?

Ich nehme an, es hängt davon ab, ob Variablen die Datenwerte speichern, an die sie gerichtet sind (z. B. 'B') oder die Anweisungen, um zu diesem Wert zu gelangen (string[count])? Was genau ist in einer Variablen gespeichert? Variiert das mit der Sprache?

+2

Das hängt von der Sprache ab, ob das Standardverhalten _call by reference_ oder _call by value_ ist. –

+0

@SohaibFarooqi Sie erwähnen "Standardverhalten", also bedeutet das, dass dies vom Programmierer geändert oder eingestellt werden kann? – GoatsWearHats

+0

Aufruf per Referenz oder Wert bezieht sich auf aufrufende Funktionen, nicht auf die Auswertung von Anweisungen. Dies kann niemals vom Programmierer geändert oder eingestellt werden, es ist eine Eigenschaft der Sprache. (Aber natürlich können Sie Referenzen nach Wert übergeben ...) – alain

Antwort

3

Ja, es variiert mit der Sprache. In fast allen Sprachen müsste char = string[count] neu bewertet werden.

Die Sprachen, die automatisch char aktualisieren, heißen Reactive Programming Languages.

1

Ja. Sie müssen es ständig neu bewerten, da diese Variablen statische Werte haben. Es ändert sich nicht, wenn Sie es nicht ändern.

Verwandte Themen