In role Real§
See primary documentation in context for method Bridge
method Bridge(Real:)
Default implementation coerces the invocant to Num
and that's the behavior of this method in core Real
types. This method primarily exist to make it easy to implement custom Real
types by users, with the Bridge
method returning one of the core Real
types (NOT necessarily a Num
) that best represent the custom Real
type. In turn, this lets all the core operators and methods obtain a usable value they can work with.
As an example, we can implement a custom Temperature
type. It has a unit of measure and the value, which are given during instantiation. We can implement custom operators or conversion methods that work with this type. When it comes to regular mathematical operators, however, we can simply use the .Bridge
method to convert the Temperature
to Kelvin expressed in one of the core numeric types:
is Realsub postfix:<℃>sub postfix:<℉>sub postfix:<K>my := 36.6℃;my := 451℉;my := 5778K;say ; # OUTPUT: «36.6 degrees C»say + + ; # OUTPUT: «6593.677777777778»say 123K + 456K; # OUTPUT: «579»
As we can see from the last two lines of the output, the type of the bridged result is not forced to be any particular core type. It is a Rat
, when we instantiated Temperature
with a Rat
or when conversion was involved, and it is an Int
when we instantiated Temperature
with an Int
.
In role Rational§
See primary documentation in context for method Bridge
method Bridge()
Returns the number, converted to Num
.
In Num§
See primary documentation in context for method Bridge
method Bridge(Num:)
Returns the number.
In Int§
See primary documentation in context for method Bridge
method Bridge(Int: --> Num)
Returns the integer converted to Num
.