作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当BUILD
调用移相器,它会覆盖 Perl6 中的默认属性分配。假设我们必须使用 BUILD 移相器,就像我们在 this module 中所做的那样(这就是我遇到这个问题的地方)。在那个阶段为属性赋值的方法是什么?
我用过这个
class my-class {
has $.dash-attribute;
submethod BUILD(*%args) {
for %args.kv -> $k, $value {
self."$k"( $value );
}
}
};
my $my-instance = my-class.new( dash-attribute => 'This is the attribute' );
Too many positionals passed; expected 1 argument but got 2
$!
的其他组合或
$.
,直接赋值,将属性声明为
rw
(相同的错误)产生不同类型的错误。这可能只是一个语法问题,但我找不到解决方案。任何帮助将不胜感激。
最佳答案
在你的例子中有两件事是错误的,我是这么看的。首先,如果你想要一个属性是可写的,你需要标记它is rw
.其次,改变属性的值是通过赋值来完成的,而不是通过将新值作为参数给出。
所以我认为代码应该是:
class my-class {
has $.dash-attribute is rw;
submethod BUILD(*%args) {
for %args.kv -> $k, $value {
self."$k"() = $value;
}
}
};
my $my-instance = my-class.new( dash-attribute => 'attribute value' );
dd $my-instance;
# my-class $my-instance = my-class.new(dash-attribute => "attribute value")
关于oop - 为对象的 BUILD 移相器中的属性赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49334689/
我正在做一个项目,我的 android 在这个项目中作为一个网络服务器工作;输入带端口号的 IP 地址,打开 Web 界面,用户可以将文件上传到手机。我想在 Web 界面上显示一些图片,以便我们的界面
我是一名优秀的程序员,十分优秀!