RatStr — 유리수와 문자열을 함께 담는 이중 값 타입
RatStr — 유리수와 문자열을 함께 담는 이중 값 타입
RatStr는 이중 값(dual value) 타입 이에요. Allomorph의 서브클래스라서 Str이기도 하고 Rat이기도 하죠. 즉 한 객체 안에 숫자로서의 값과 문자열로서의 표현을 동시에 담고 있어요.
각각의 특성에 맞춰 사용하면 자연스럽게 동작해요.
my $rat-str = <42.1>;
say $rat-str.^name; # OUTPUT: «RatStr»
my Rat $rat = $rat-str; # OK!
my Str $str = $rat-str; # OK!
# ∈ operator cares about object identity
say 42.1 ∈ <42.1 55 1>; # OUTPUT: «False»
자세한 내용은 Allomorph 문서를 참고하세요.
본문
method new
method new(Rat $i, Str $s)
생성자는 Rat 값과 Str 값을 모두 요구해요. 직접 생성할 때는 값이 무엇이든 상관없어요.
my $f = RatStr.new(42.1, "forty two and a bit");
say +$f; # OUTPUT: «42.1»
say ~$f; # OUTPUT: «"forty two and a bit"»
method Capture
method Capture(RatStr:D: --> Capture:D)
Mu.Capture와 동일해요.
method Numeric
multi method Numeric(RatStr:D: --> Rat:D)
multi method Numeric(RatStr:U: --> Rat:D)
:D 변형은 호출자의 숫자 부분을 반환해요. :U 변형은 숫자 컨텍스트에서 초기화되지 않은 값을 사용한다는 경고를 내고 값 0.0을 반환해요.
method Rat
method Rat
RatStr의 Rat 값을 반환해요.
method Real
multi method Real(Real:D: --> Rat:D)
multi method Real(Real:U: --> Rat:D)
:D 변형은 호출자의 숫자 부분을 반환해요. :U 변형은 숫자 컨텍스트에서 초기화되지 않은 값을 사용한다는 경고를 내고 값 0.0을 반환해요.
Operators
infix ===
multi infix:<===>(RatStr:D $a, RatStr:D $b)
RatStr의 값 동일성 연산자 예요. $a와 $b의 Rat 값이 동일하고 Str 값도 동일하면 True를, 그렇지 않으면 False를 반환해요.