كيف يمكنني حل حالة "الاستخدام غير المجدي للمتغير في سياق فارغ"؟

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

سؤال

كيف يمكنني حل حالة "الاستخدام غير المجدي للمتغير في سياق فارغ"؟

على سبيل المثال:

  my $err = $soap_response->code, " ", $soap_response->string, "\n";
  return $err;

أحصل على تحذيرات مثل "الاستخدام غير المجدي للمتغير في سياق فارغ"؟لماذا؟كيف يمكنني حلها؟

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

المحلول

في حال كنت ترغب في تسلسل الحجج ، استخدم "." المشغل أو join:

my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join '', $soap_response->code, " ", $soap_response->string, "\n";

التالي هو السبب في أن بيرل يمنحك تحذيرات.

أنت تعين على متغير القياسي $err, ويتم تقييم الجانب الأيمن من المهمة في سياق العددية.

الثنائية ","هو مشغل الفاصلة. في سياق العددية ، يقوم بتقييم الوسيطة اليسرى في سياق الفراغ ، ويلقي تلك القيمة بعيدًا ، ثم يقوم بتقييم الوسيطة الصحيحة في سياق العددية ويعيد تلك القيمة.

تقييم متغير أو ثابت ورمي هذه القيمة بعيدا عديمة الفائدة. ويحذرك بيرل من هذا.

لمعلوماتك: مشكلة أخرى ممكنة مع الكود الخاص بك:

my $err = $soap_response->code, " ", $soap_response->string, "\n";

المهمة لها أسبقية أعلى بحيث هي:

(my $err = $soap_response->code), " ", $soap_response->string, "\n";

نرى مشغلي بيرل والأسبقية و ال مشغل فاصلة للمزيد من المعلومات.

نصائح أخرى

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

my $err = $soap_response->code. " ". $soap_response->string. "\n";
my $err = join(' ', $soap_response->code, $soap_response->string) . "\n";

أو ، IMO أفضل:

return sprintf "%s %s\n", $soap_response->code, $soap_response->string;

نرى perldoc -f الانضمام و Perldoc -f Sprintf بيرلوك بيرلوب.

بخصوص التحذير ، انظر بيرلوك بيرلوب و هذه الملاحظة على مشغل الفاصلة.

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