dart 中的 this 关键字与 $ 运算符结合使用时会返回意外的、奇怪的输出

问题描述 投票:0回答:1

所以我正在写一个程序,供我参考这个关键字的用法。我在类“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 的实例”

Unexpected Ouput

我不知道这意味着什么,我是面向对象编程和 dart 的新手。这是抛出一些异常吗?编译器想表达什么?这是 this 关键字和 $ 运算符之间的一些奇怪的交互吗?最重要的是,如何纠正它?预先感谢。

flutter dart class oop this
1个回答
0
投票

在 Dart 中,要在表达式不是标识符时使用字符串插值,请使用

${expression}

print("I am $x"); // "x" is an identifier
print("I am ${this.x}"); // "this.x" is not an identifier

参见:字符串插值

要将表达式的值放入字符串中,请使用

${expression}
。如果表达式是标识符,则可以省略
{}

© www.soinside.com 2019 - 2024. All rights reserved.