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 문서를 참고하세요.

출처: Raku Documentation — RatStr

본문

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

RatStrRat 값을 반환해요.

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$bRat 값이 동일하고 Str 값도 동일하면 True를, 그렇지 않으면 False를 반환해요.