所以我正在写一个程序,供我参考这个关键字的用法。我在类“Example”中声明了一个类变量,假设“x=1”。我在该类中声明了一个方法“method1”。在该方法中,我再次声明了另一个名为“x=5”的变量。我的意图是,如果不使用此关键字,输出应为 5,即局部变量值。但是当我使用这个关键字时,输出将为1,因为它引用了类变量。 代码看起来像这样。
class Example{
int x=1
;
void method1()
{
int x=5;
print(x);
print(this.x);
}
}
正如我预期的那样,它工作正常。 当我尝试将代码与 $ 运算符组合时,问题就出现了。
所以我这样重写了代码,以便更好的参考
class Example{
int x=1;
void method1()
{
int x=5;
print("I am $x");
print("I am $this.x");
}
}
这就是问题出现的地方。 第一行代码将值正确打印为“I am 5”。 但下一行不是打印“I am 1”,而是打印这样的内容
“我是‘Example’.x 的实例”
我不知道这意味着什么,我是面向对象编程和 dart 的新手。这是抛出一些异常吗?编译器想表达什么?这是 this 关键字和 $ 运算符之间的一些奇怪的交互吗?最重要的是,如何纠正它?预先感谢。
在 Dart 中,要在表达式不是标识符时使用字符串插值,请使用
${expression}
。
print("I am $x"); // "x" is an identifier
print("I am ${this.x}"); // "this.x" is not an identifier
参见:字符串插值
要将表达式的值放入字符串中,请使用
。如果表达式是标识符,则可以省略${expression}
。{}