문제

나는 NS2에서 20 노드를 사용하고 있으며, a (0) a (1) a (2) a (3) a (4) 변수에 액세스하려고합니다.

여기 내 코드가 있습니다

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

}

그러나 오류가 발생하지 않습니다. 변수 이름 "Sink (0)": Upvar는 배열 요소처럼 보이는 스칼라 변수를 생성하지 않습니다.

변수를 다음 방식으로 선언합니다

proc record {} {
  global sink(0) sink(1) sink(2) sink(3) sink(4) sink(5)
}
도움이 되었습니까?

해결책

그냥 사용하십시오

global sink

(글로벌은 특별한 일입니다 upvar 사례)

끝나는 변수 (...) 숫자를 사용하는 (연관) 배열은 키를 사용하지 않는 것이 권장되지 않으며, 대신 목록을 사용하는 것이 좋습니다 (예 :

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"
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top