2016-05-11 4 views
1

Im folgenden Code, wenn ich die Variable, Regime, drucken, erhalte ich entweder "A" oder "D", aber wenn ich Regimep oder Regimec drucke ich ["A"] oder ["D"].Kopieren patch-eigene Variable zu Turtle-Own

Der entsprechende Code ist:

patches-own [ 
regimep 
] 

governments-own [ 
regime 
] 

citizens-own [ 
regimec 
] 
... 

to set-governments 
    ask governments [ 
    ... 
    ifelse random 100 < democracies% [set regime "D"] [set regime "A"] 
    ifelse regime = "D" [set shape "star"] [set shape "circle"] 
    ... 
    ] 
end 

to set-citizens 
    ask citizens [ 
    let x governments with [idgov = [idcit] of myself] ;; idgov is a variable of the breed governments and idcit is a variable for citizens 
    set regimec [regime] of x 
    ] 
end 

to set-patches 
    ask patches [ 
    let x governments with [idgov = [idpat] of myself] 
    set regimed [regime] of x 
    ] 
end 

Wo sind diese Klammern kommen aus? Ich muss in der Lage sein, die Variable ohne die Klammern zu drucken. Danke für die Hilfe.

+0

Ihr Code sagt innerhalb von Set-Patches: Regimed [Regime] von x, aber Ihre Patch-Variable ist Regimep. Fragen Sie stattdessen nach regimed? – mattsap

Antwort

1

Die Klammern sind, weil Ihre Variable eine Liste und nicht ein einzelnes Element ist.

let x governments with [idgov = [idpat] of myself] 
set regimed [regime] of x 

governments with [idgov = [idpat] of myself] ist ein Mittel, das set.That ist, x ist auch ein Mittel set.

Für eine agentset, von Berichten einer Liste, die für jeden Agenten in der agentset (in beliebiger Reihenfolge), um den Wert der Reportergen enthält.

Ich denke, dass Sie möchten, dass x ein einziger Agent ist.

Versuchen Sie, diese

let x one-of governments with [idgov = [idpat] of myself] 
set regimed [regime] of x 

Ähnlich regimec hat das gleiche Problem.