如果我有一个Str类型的对象,并且我想将它强制转换为Int,那么我的理解是我可以通过在Str-object上调用Int方法来实现这一点,如下所示:
"100".Int
我(我想)知道我可以这样做,因为https://docs.perl6.org/type/Str上的Str类型文档列出了Int-method.现在,为了将这个新创建的Int强制转换为Complex类型的对象,我尝试了以下强制:
"100".Int.Complex
哪个有效:-)所以没问题.除了我无法弄清楚它为何起作用.https://docs.perl6.org/type/Int上的Int类型文档未列出方法Complex.我确实为ComplexStr类找到了一个具有此名称的方法,但我不知道这是否与我的Int有关,或者没有.
所以问题是:上述强制如何运作?复合方法来自何处?我怎么能知道我可以在尝试之前在Int-object上调用它?
tim*_*imo 12
这仅仅是不完整文档的情况.
您总是可以通过调用.^methods它来找出对象支持的方法:
perl6 -e '$_>>.name.join(", ").say for 123.^methods.sort(*.name).rotor(5 => 0, :partial)'
ACCEPTS, Bool, Bridge, Capture, Complex
DUMP, FatRat, Int, Num, Numeric
Range, Rat, Real, Str, WHICH
abs, acos, acosec, acosech, acosh
acotan, acotanh, asec, asech, asin
asinh, atan, atan2, atanh, base
ceiling, chr, cis, conj, cos
cosec, cosech, cosh, cotan, cotanh
exp, expmod, floor, gist, is-prime
isNaN, log, log10, lsb, msb
narrow, new, perl, polymod, pred
rand, roots, round, sec, sech
sign, sin, sinh, sqrt, succ
Run Code Online (Sandbox Code Playgroud)
与此同时,我将提交添加到缺少的方法的docs repo.该网站已经通过更改重新生成:https://docs.perl6.org/type/Int#(Real)_method_Complex