Domanda

Sto usando 20 nodi in NS2, sto cercando di accedere alle variabili A (0) a (1) a (2) a (3) a (4) con loop come posso farlo

Ecco il mio codice

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

}

Ma dà un errore Nome variabile cattivo "Sink (0)": Upvar non creerà una variabile scalare che sembra un elemento array

Dichiaro la variabile nel modo seguente

proc record {} {
  global sink(0) sink(1) sink(2) sink(3) sink(4) sink(5)
}
È stato utile?

Soluzione

Basta usare

global sink

(Global è solo uno speciale upvar Astuccio)

variabili che finiscono con (...) sono array (associativi), che utilizzano numeri come chiave non è consigliato, è meglio utilizzare un elenco, ad esempio

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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top