كيف نقوم بإنشاء متغير بالوعة (5) في البرنامج النصي TCL

StackOverflow https://stackoverflow.com/questions/19847532

  •  29-07-2022
  •  | 
  •  

سؤال

أنا أستخدم 20 عقدة في NS2 ، أحاول الوصول إلى 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