다른 스칼라 컨텍스트에서 다른 값을 반환하는 객체를 어떻게 작성합니까?
문제
문자열 컨텍스트와 숫자 컨텍스트에서 다른 값을 반환하고 싶습니다. $!
하다. 나는 내가 WantArray와 함께 목록에 있는지 또는 스칼라 컨텍스트에 있는지 여부를 알 수 있지만, 순수한 Perl에 어떤 스칼라 컨텍스트를 결정할 수 있습니까? 나는 XS에도 답이 있다고 가정하고 순수한 perl에서 방법이 없다면 그 대답을 기꺼이받을 것입니다.
해결책
확인하십시오 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
핵심 분포의 일부이며 Perl이있는 곳이면 어디서나 불가능해야합니다.
다른 팁
이것이 유용한 경우 (아마도 로마 숫자) 사례를 제안 할 수 있지만 정수와 문자열 속성이있는 객체를 만드는 것이 좋습니다. 적절한 컨텍스트에서 적절한 속성을 사용하십시오.
이를 통해 '오버로드 사용'으로 작업을 과부하 할 수있는 유연성이 추가됩니다. 로마 숫자의 예에서 Dualvar는 2 개의 로마 숫자를 함께 추가하려고 할 때까지 작동합니다.
제휴하지 않습니다 StackOverflow