다른 스칼라 컨텍스트에서 다른 값을 반환하는 객체를 어떻게 작성합니까?

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

  •  03-07-2019
  •  | 
  •  

문제

문자열 컨텍스트와 숫자 컨텍스트에서 다른 값을 반환하고 싶습니다. $! 하다. 나는 내가 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 개의 로마 숫자를 함께 추가하려고 할 때까지 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top