是否在dart中的一行中设置和返回变量?

o7jaxewo  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(119)

I think I remember something like this from python, maybe it was the walrus operator? idk.
but is there a way to set an attribute while returning the value? something like this:

class Foo {
  late String foo;
  Foo();
  String setFoo() => foo := 'foo';
}

f = Foo();
x = f.setFoo();
print(x);
// 'foo'
i7uq4tfw

i7uq4tfw1#

我想我找到了,也就是说,对于foo可以为null的情况:

class Foo {
  String? foo;
  Foo();
  String setFoo() => foo ??= 'foo';
}
ct3nt3jp

ct3nt3jp2#

没有人禁止你这样做,就像你说的:

class Foo {
  late String foo;

  String setFoo() => foo = 'foo';
}

void main() {
    print(Foo().setFoo());
}

使用late修饰符的唯一缺点是,您可能会在初始化之前意外访问foo字段,这将导致LateInitializationError。为了防止这种情况,您可以为该字段使用可为null的类型。
此外,您可以直接初始化内联字段:

String foo = 'foo';

相关问题