سؤال

يمكنني بسهولة ربط متغيرين، foo وbar، كما يلي في Tcl:"${foo}${bar}".

ومع ذلك، إذا كنت لا أرغب في وضع نتيجة وسيطة في متغير، فكيف يمكنني بسهولة ربط نتائج استدعاء بعض proc؟

اليد الطويلة ستكتب هذا:

set foo [myFoo $arg]
set bar [myBar $arg]
set result "${foo}${bar}"

هل هناك طريقة ما لإنشاء نتيجة دون إدخال المتغيرات المؤقتة foo وbar؟

القيام بذلك غير صحيح لأغراضي:

concat [myFoo $arg] [myBar $arg]

لأنه يقدم مسافة بين النتيجتين (لأغراض القائمة) في حالة عدم وجود أحدهما.

يبدو أن "string concat" هو ما أريده، ولكن لا يبدو أنه موجود في نسختي من مترجم Tcl.

string concat [myFoo $arg] [myBar $arg]

تتم كتابة سلسلة concat هنا:

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

المحلول

يمكنك تضمين الأوامر ضمن سلسلة ذات علامات اقتباس مزدوجة دون الحاجة إلى متغير مؤقت:

set result "[myFoo $arg][myBar $arg]"

نصائح أخرى

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

set result ""
append result [myFoo $arg]
append result [myBar $arg]
append result [myBaz $arg]

فقط اكتبها ككلمة بدون مسافات إضافية:

[myFoo $arg][myBar $arg]

ترى Tcl أن هذه كلمة واحدة بعد الاستبدال، بغض النظر عن نتيجة الأمرين الفرعيين.

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