كيف يمكنني إنشاء كائن بإرجاع قيم مختلفة في مختلف العددية السياقات?
سؤال
أريد العودة إلى قيمة مختلفة في سلسلة السياق الرقمية السياق مثل $!
لا.وأنا أعلم أنني يمكن معرفة ما إذا كان أنا في قائمة أو سياق الحجمي مع wantarray ، ولكن هل هناك أي طريقة في بيور بيرل لتحديد سياق الحجمي أنا ؟ أفترض هناك إجابة في XS وكذلك أنا على استعداد لاتخاذ هذا الجواب إذا كان هناك أي وسيلة تفعل ذلك في بيور بيرل.
المحلول
تحقق من Scalar::Util
وحدة, على وجه التحديد dualvar()
وظيفة:
use Scalar::Util qw(dualvar);
my $scalar = dualvar 10, "Hello";
my $twelve = $scalar + 2; # $twelve = 12
my $greeting = $scalar . " world"; # $greeting = "Hello world"
Scalar::Util
هو جزء من جوهر التوزيع ، يجب أن تكون متوافرة في أي مكان لديك بيرل.
نصائح أخرى
في حين يمكنني اقتراح الحالات المفيد (ربما الأرقام الرومانية), يمكنك أن تكون أفضل حالا خلق كائن مع عدد صحيح سمة السلسلة.استخدام سمة المناسبة في السياق المناسب.
وهذا يعطي لك المرونة للتمكن من التحميل الزائد العمليات مع استخدام الزائد'.في الأرقام الرومانية سبيل المثال ، dualvar العمل حتى كنت ترغب في إضافة 2 الأرقام الرومانية معا.