Learn Raku From Roast
Learn Raku From Roast
Learn Raku From Roast
Difference Between Build and Tweak in Raku
How to Type Unicode in Raku
Pattern Dispatch
Custom When
Caesarean Substrings With Raku and Perl
Raku 中的实例属性 在 Raku 中, 默认情况下, 一个对象的方法是完全可以访问的, 但它的数据(作为属性)不能在类外直接访问, 除非明确指定。为了从外部读取、写入或两者都能访问数据, 你必须以某种方式将其公开。你允许对一个对象的数据进行何种级别的访问, 主要取决于你声明它的属性的方式。 $! twigil 让我们从一个简单的 Raku 类定义的例子开始。 # person01.raku class Person { has $!name; } my $john = Person.new(name => 'Suth'); # 默认地, 传递给 new # 的参数必须是命名的(键值对儿) put $john.name; #=> Error: No such method 'name' for invocant # of type 'Person'. 在这个例子中, 你既不能通过新的构造函数设置一个属性的值(例如, john 的名字), 也不能检索它, 因为它根本没有被设置过。用$! twigil 声明的属性是私有的, 只能在类内通过! 这意味着即使是默认的 new 构造函数也不能在对象构造过程中用来设置一个显式的 $!-declared属性。 一个直接的解决方案是通过为我们的类实现一个 TWEAK 子方法来自己处理属性初始化。在 Raku 中, 在对象构造的不同阶段会调用多个例程, TWEAK 是其中最后一个。我不会去细说细节, 但简而言之, TWEAK 子方法允许你根据其他属性或实例变量的值为实例变量赋值。