小编yos*_*ian的帖子

仅在 Rust“默认”实现中设置一个字段

我有一个struct带有大量字段的 Rust,所有这些字段都是它们自己Default。我想impl Default为它创建一个自定义,具有以下语义:

  1. 其中一个字段具有自定义值
  2. 所有其他领域都从它们的价值中获得价值Default::default

我希望这样做:

impl Default for Foo {
    fn default() -> Self {
        Self {
            thing: 2,
            ..Default::default()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

...但这实际上会导致未经检查的递归,因为..Default::default()调用Self::default()而不是$member::default()针对Self.

除了编写自定义宏或显式列出每个字段之外,有什么方法可以实现此目的吗?

traits rust

7
推荐指数
1
解决办法
1992
查看次数

全局符号"%self"需要Perl模块中的显式包名称

我正在编写一个Perl模块,并且在运行测试时遇到了这个令人困惑的错误消息.

sub new {
  my $class = shift;
  my $self = @_;
  $word = $self{word} || die "No word provided.";
  @definitions = @{decode_json(get($urban_url . $word))->{'list'}} || die "Error during fetch/decode.";
  @tags = @{decode_json(get($urban_url . $word))->{'tags'}} || "Error during fetch/decode.";
  bless($self, $class);
  return $self;
}
Run Code Online (Sandbox Code Playgroud)

如您所见,$self声明正确.word是在new子例程上面声明的全局变量.失败发生在use语句的每个测试中,并追溯到分配$word.

oop perl perl-module

0
推荐指数
1
解决办法
2378
查看次数

标签 统计

oop ×1

perl ×1

perl-module ×1

rust ×1

traits ×1