在dart中清除一个变量并改变其值

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

为什么在这种情况下,我有一个错误。

class Person {
  Person({name,age});
  var name,age = 5;
  name = "wael";
  void Xprint()=>print('$name is $age years old');
}

main () {
  var x = Person();
  x.Xprint();
}

错误

1.dart:6:3。错误,变量必须使用关键字'const'、'final'、'var'或类型名来声明。变量必须使用关键字'const'、'final'、'var'或类型名来声明。Name = "wael"; ^^^1.dart:6:3: 错误:'name'已经在这个作用域中声明了。 name = "wael"; ^^^1.dart:5:7: Context: var name,age = 5; ^^^1.dart:7:26: Error: void Xprint()=>print('$name is $age years old'); ^。

**image for the error**

variables dart
1个回答
0
投票

你不能在一个开放的地方有任何指令。class. 任何指令必须在一个方法里面。你可以这样做。

class Person {
  Person({name,age});
  var name= "wael",age = 5; // assign default value while declartion
  void Xprint()=>print('$name is $age years old');
}

main () {
  var x = Person();
  x.Xprint();
}

或者在方法中设置默认值 constructor

class Person {
  Person({this.name= "wael",age});
  var name,age = 5;
  void Xprint()=>print('$name is $age years old');
}

main () {
  var x = Person();
  x.Xprint();
}

0
投票

我不知道你在这里想达到什么目的,但让我试着解释一下发生了什么。

如果你宣布 本地 变量(在一个函数内),那么你的方法是正确的。

void someFunction() {
  var name, age = 5; // Declaration of two local variables, initialize one of them.
  name = "wael"; // Statement assigning a value to `name`.
  void xprint() => print('$name is $age years old');  // Function declaration
  xprint(); // Statement performing a function call.
}

但是,你在声明一个 阶层:

class Person {
  var name, age = 5; // Declaration of two instance variables.
  Person({name, age});  // constructor (needs more work);
  name = "wael"; // .... this is invalid. Statements are not allowed here.
  void Xprint()=>print('$name is $age years old');  // Instance method declaration.
}

所以问题是 name = "wael"; 的地方是不允许出现的。语句只允许在函数内部出现,不允许作为类声明的一部分。

目前还不清楚你的 想要 来做。所以,让我们宣布 Person 类的方式。

class Person {
  String name;
  int age;
  Person({this.name = "wael", this.age = 5}); // Parameters initialize variables directly.
  void xprint() {
    print("$name is $age years old");
  }
}

这个类的名字默认为 "wael",年龄默认为 "5",但如果提供了参数,则使用参数代替。

(我可能不会为这个类的 nameage但我们假设在这种情况下它是有意义的)。)

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