В Dart конструкторы играют решающую роль в инициализации объектов. При работе с конечными переменными важно понимать, как устанавливать их значения внутри конструкторов. В этой статье блога мы рассмотрим различные методы установки конечных переменных в конструкторах Dart, дополненные разговорными объяснениями и примерами кода.
Метод 1. Непосредственное присвоение значений
Один простой подход заключается в присвоении значений непосредственно конечным переменным в списке параметров конструктора. Этот метод подходит, если во время создания объекта у вас есть все необходимые значения. Давайте рассмотрим пример:
class Person {
final String name;
final int age;
Person(this.name, this.age);
}
void main() {
var person = Person('John Doe', 30);
print('${person.name} is ${person.age} years old.');
}
Метод 2: использование списков инициализации
Dart предоставляет списки инициализации, которые позволяют выполнять дополнительные вычисления или устанавливать значения до выполнения тела конструктора. Этот метод удобен, когда вам нужно манипулировать входящими значениями или выполнять сложные вычисления. Вот пример:
class Circle {
final double radius;
final double area;
Circle(double radius)
: radius = radius,
area = calculateArea(radius);
static double calculateArea(double radius) {
return 3.14 * radius * radius;
}
}
void main() {
var circle = Circle(5);
print('Circle radius: ${circle.radius}');
print('Circle area: ${circle.area}');
}
Метод 3: использование фабричных конструкторов
Если у вас сложная логика, связанная с установкой конечных переменных, вы можете использовать фабричные конструкторы. Фабричные конструкторы позволяют создавать объекты способом, который может отличаться от традиционного вызова конструктора. Вот пример:
class Square {
final double side;
final double area;
Square._(this.side, this.area);
factory Square(double side) {
final area = side * side;
return Square._(side, area);
}
}
void main() {
var square = Square(4);
print('Square side: ${square.side}');
print('Square area: ${square.area}');
}