سؤال

ما الذي يجب أن تفعله عينة التعليمات البرمجية هذه؟

set l { A B C D }
lreplace $l 1 2 \[ \]

يعود {A {[} \] D}, ، ومع ذلك أريد أن يكون {A [ ] D}.

ما الخطأ الذي افعله؟

هل كانت مفيدة؟

المحلول

الكود الخاص بك يفعل بالضبط ما تريده، أنت فقط تقرأ سلسلة مندوب الإخراج الخاص بك وتسيء فهمه:

% set l { A B C D }
 A B C D 
% foreach elem $l { puts $elem }
A
B
C
D
% set j [lreplace $l 1 2 \[ \]]
A {[} \] D
% foreach elem $j { puts $elem }
A
[
]
D
% join $j
A [ ] D

عندما تقرأ مندوب السلسلة، فإنك تراه يفلت من [ و ].كما ترون من مخرجات foreach، فإن القيم الفعلية هي ما تطلبه.يمكنك استخدام join للحصول على السلسلة التي تهتم بها إذا كان ما تريده هو مجرد سلسلة تحتوي على الأحرف المعنية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top