Tcl lreplace لا يمكن أن يحل محل الأقواس؟
-
29-10-2019 - |
سؤال
ما الذي يجب أن تفعله عينة التعليمات البرمجية هذه؟
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
للحصول على السلسلة التي تهتم بها إذا كان ما تريده هو مجرد سلسلة تحتوي على الأحرف المعنية.
لا تنتمي إلى StackOverflow