内省 – Perl 6是否与Python的dir()相当?
我试图在Perl中变得舒适6.当我在REPL提示符下时,我发现
Python中的一个方便的东西是我可以做一个目录(对象),并找出一个对象的属性,在Python中包括对象的方法.
这通常有助于提醒我想做什么; “哦,没错,Python中的修剪被称为”strip“,这样的事情. 在Perl 6中,我知道内省方法.WHO,.WHAT,.WHICH,.HOW和.WHY,但这些都是在类或对象级别.我如何找到对象内部的内容,以及我能做什么? 解决方法
你提到你已经知道了内省的方法 – 但是你是否知道你可以通过查询一个对象元对象(可从.HOW)获得什么? $perl6 > > class Article { * has Str $.title; * has Str $.content; * has Int $.view-count; * } > > my Str $greeting = "Hello World" Hello World > > say Article.^methods (title content view-count) > > say Article.^attributes (Str $!title Str $!content Int $!view-count) > > say $greeting.^methods (BUILD Int Num chomp chop pred succ simplematch match ords samecase samemark samespace word-by-word trim-leading trim-trailing trim encode NFC NFD NFKC NFKD wordcase trans indent codes chars uc lc tc fc tclc flip ord WHY WHICH Bool Str Stringy DUMP ACCEPTS Numeric gist perl comb subst-mutate subst lines split words) > > say $greeting.^attributes Method 'gist' not found for invocant of class 'BOOTSTRAPATTR' > 有一个查询对象的元对象的快捷方式; 内置Str类型的属性似乎是类型为BOOTSTRAPATTR类型 – 不实现.gist方法.作为替代,我们可以直接要求属性来吐出他们的名字; > say sort $greeting.^methods.map: *.name ; (ACCEPTS BUILD Bool DUMP Int NFC NFD NFKC NFKD Num Numeric Str Stringy WHICH WHY chars chomp chop codes comb encode fc flip gist indent lc lines match ord ords perl pred samecase samemark samespace simplematch split subst subst-mutate succ tc tclc trans trim trim-leading trim-trailing uc word-by-word wordcase words) > > say sort $greeting.^attributes.map: *.name ($!value) > 你可以找到我们更多的here(这是答案来自哪里). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |