Syntax 什么是;有",;关键字“之前的平均值”;方法“;在Raku类定义中?
最近,我意识到我完全是错误地编写了我的一个Raku类,如下所示:Syntax 什么是;有",;关键字“之前的平均值”;方法“;在Raku类定义中?,syntax,raku,Syntax,Raku,最近,我意识到我完全是错误地编写了我的一个Raku类,如下所示: class Foo { has method bar { return 'some string'; } } 我惊讶地意识到has方法不是一个错误,并且按照预期工作 在这种情况下,有做什么?这是故意的行为吗?has是一个范围声明符,与my、our、state和anon属于同一类别。在当前包的元类中安装了具有作用域的内容 类似变量的事物总是使用显式范围声明,例如: my $lexical-var; my $.lex
class Foo {
has method bar {
return 'some string';
}
}
我惊讶地意识到has方法
不是一个错误,并且按照预期工作
在这种情况下,
有
做什么?这是故意的行为吗?has
是一个范围声明符,与my
、our
、state
和anon
属于同一类别。在当前包的元类中安装了具有
作用域的内容
类似变量的事物总是使用显式范围声明,例如:
my $lexical-var;
my $.lexical-var-with-accessor;
has $!attribute;
has $.attribute-with-accessor;
许多其他构造可以选择性地指定其作用域,但附带一个合理的默认值。例如:
my $lexical-var;
my $.lexical-var-with-accessor;
has $!attribute;
has $.attribute-with-accessor;
-与没有my sub-marine(){}
my
-与没有我们的阶级斗争{}
我们的
-与没有has-in-the-madness(){}
has的方法相同
anon
,这在元编程时很有用。例如,如果我们正在编写一个将要使用MOP构造另一个类的类,我们可以编写:
$the-class.^add_method('name', anon method name() { $name });
这意味着我们不会在当前类中安装方法
name
。然而,在大多数情况下,我们希望具有
范围。明确地指定它没有坏处,就像在sub
之前编写my
没有坏处一样;这只是重申默认值。喜欢这些例子:-)