访问类似于 this.variable 的参数

access arguments similar to this.variable

void main() {
  doStuff("foo");
}

void doStuff(String myString) {
  String myString = "bar";
  print(myString); //prints "bar"
}

上面在dartpad中执行产生“bar”,使用局部变量代替最后一行中的参数。如果不是参数 myString 而是 class 的实例变量,我们可以使用 this.myString 访问原始 myString 以打印“foo”。在声明同名局部变量后,是否有类似的方法来访问函数的参数?

没有

对于局部变量,您应该能够重命名任何隐藏您要访问的变量的局部变量,因此没有范围覆盖。

对于实例变量,您可以使用 this.x,对于静态变量,您可以使用 ClassName.x,对于导入的 top-level 名称,您可以使用新的前缀名称导入库并作为 prefix.x 访问它,对于 current 库的 public top-level 变量,如果其他所有方法都失败,您可以导入该库也使用前缀并使用:

// library foo.dart
import "foo.dart" as toplevel; // <- this library!
// ...
int foo = 42;
// ...
int method(int foo) {
 return toplevel.foo + foo; // Wohoo

对于局部变量,您只需重命名覆盖您想要的变量的变量即可。由于没有人可以从方法外部看到局部变量,因此 no-one 将永远知道。