Frage

Ich verwende 20 Knoten in NS2, ich versuche, auf die a (0) a (1) a (2) a (3) a (4) Variablen mit für die Schleife zuzugreifen, wie kann ich das tun

Hier ist mein Code

for {set i 0} {$i < $val(nn)} {incr i} {
    set sink($i) [new Agent/LossMonitor]
    $ns attach-agent $n($i) $sink($i)

}

Aber er gibt einen Fehler mit schlechtem Variablennamen "Sink (0)": UPVAR erstellt keine skalare Variable, die wie ein Array -Element aussieht

Ich erkläre die Variable auf folgende Weise

proc record {} {
  global sink(0) sink(1) sink(2) sink(3) sink(4) sink(5)
}
War es hilfreich?

Lösung

Benutz einfach

global sink

(Global ist nur ein besonderes upvar Fall)

Variablen, die mit enden mit (...) sind (assoziative) Arrays, die Nummern als Schlüssel nicht empfohlen werden. Es ist besser, stattdessen eine Liste zu verwenden, z. B., z. B.

set mylist {}
# append some elements
lappend mylist "foo" "bar" "baz"
# get the 2nd element
puts [lindex $mylist 1]
# set the 3rd element to "Hello World"
lset mylist 2 "Hello World"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top