2017-02-13 6 views
0

Ich habe ein Skript, das mir Probleme bereitet zu verstehen.Was bedeutet Zeile [12], wenn sie als Bedingung verwendet wird

if (!row[20] || (row[20] && rowHasChanged)) { 

Ich muss wissen ... was macht row[20] oder !row[20] bedeuten? Ich weiß, dass sie auf eine Spalte verweisen, ja ... aber bedeutet das etwas wie "nicht leer" für !row[20]?

Und wie ich so etwas wie angeben:

if ((!row[20] && row[12]=TRUE) || (row[20] && rowHasChanged)) { 

Antwort

0

In diesem Fall wird boolean Typ beurteilt durch "if".

"! Row [20]" bedeutet, dass es nicht leer ist. Nämlich, es ist "falsch". So bedeutet "Zeile [20]", dass es Daten enthält. Nämlich, es ist "wahr". "rowHasChanged" bedeutet "wahr". "||" und "& &" bedeuten "oder" und "und" der logischen Operatoren.

Durch die Kenntnis aller Muster von "wahr" von "falsch", denke ich, dass Sie über dieses Skript verstehen können. Also hat er den Zustand von "row [20]" und "rowHasChanged" für dieses Skript untersucht. Ein zu untersuchendes Skript ist wie folgt.

Beispielskript 1:

var bol = [true, false]; 
var row = []; 
for (i in bol) { 
    row[20] = bol[i]; 
    for (j in bol) { 
    var rowHasChanged = bol[j]; 
    if (!row[20] || (row[20] && rowHasChanged)) { 
     Logger.log("EXECUTED. (row[20] = %s, rowHasChanged = %s)", row[20], rowHasChanged) 
    } else { 
     Logger.log("Not executed. (row[20] = %s, rowHasChanged = %s)", row[20], rowHasChanged) 
    } 
    }  
} 

Ergebnis:

EXECUTED. (row[20] = true, rowHasChanged = true) 
EXECUTED. (row[20] = false, rowHasChanged = true) 
EXECUTED. (row[20] = false, rowHasChanged = false) 
Not executed. (row[20] = true, rowHasChanged = false) 

Wenn "rowHasChanged" "wahr" ist unter ungeachtet der "row [20]", "die Befehle in wenn "ausgeführt werden. Wenn "rowHasChanged" "false" ist, nur wenn "row [20]" false ist, werden die Befehle in "if" ausgeführt.

über nächsten Skript,

if ((!row[20] && row[12]=TRUE) || (row[20] && rowHasChanged)) { 

Für dieses Skript, ich denke, dass ein Fehler auftritt. Wenn Sie diese verwenden möchten, ändern

if ((!row[20] && row[12] == true) || (row[20] && rowHasChanged)) { 

oder

if ((!row[20] && row[12]) || (row[20] && rowHasChanged)) { 

Wie oben erwähnt, auch sie für dieses Skript untersucht.

Beispielskript 2:

var bol = [true, false]; 
var row = []; 
for (i in bol) { 
    row[20] = bol[i]; 
    for (j in bol) { 
    row[12] = bol[j]; 
    for (k in bol) { 
     var rowHasChanged = bol[k]; 
     if ((!row[20] && row[12]) || (row[20] && rowHasChanged)) { 
     Logger.log("EXECUTED. (row[12] = %s, row[20] = %s, rowHasChanged = %s)", row[12], row[20], rowHasChanged) 
     } else { 
     Logger.log("Not executed. (row[12] = %s, row[20] = %s, rowHasChanged = %s)", row[12], row[20], rowHasChanged) 
     } 
    } 
    } 
} 

Ergebnis:

EXECUTED. (row[12] = true, row[20] = true, rowHasChanged = true) 
EXECUTED. (row[12] = true, row[20] = false, rowHasChanged = false) 
EXECUTED. (row[12] = false, row[20] = true, rowHasChanged = true) 
EXECUTED. (row[12] = true, row[20] = false, rowHasChanged = true) 
Not executed. (row[12] = true, row[20] = true, rowHasChanged = false) 
Not executed. (row[12] = false, row[20] = true, rowHasChanged = false) 
Not executed. (row[12] = false, row[20] = false, rowHasChanged = true) 
Not executed. (row[12] = false, row[20] = false, rowHasChanged = false) 

Wenn dies für Sie hilfreich sein, ich bin froh.

Verwandte Themen