Question

J'utilise 20 nœuds dans ns2, j'essaie d'accéder aux variables a (0) a (1) a (2) a (3) a (4) avec une boucle comment puis-je faire cela

Voici mon code

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

}

mais il donne une erreur de mauvais nom de variable "swier (0)": upvar ne créera pas une variable scalaire qui ressemble à un élément de tableau

Je déclare la variable de manière suivante

proc record {} {
  global sink(0) sink(1) sink(2) sink(3) sink(4) sink(5)
}
Était-ce utile?

La solution

Utiliser juste

global sink

(Global est juste un spécial upvar Cas)

variables qui se terminent avec (...) sont des tableaux (associatifs), en utilisant les nombres car la clé n'est pas recommandée, il est préférable d'utiliser une liste à la place, par exemple

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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top