gpt4 book ai didi

dart - 如何在 Dart 中使用复杂参数进行 super() 调用?

转载 作者:行者123 更新时间:2023-12-03 04:29:18 25 4
gpt4 key购买 nike

根据我的研究,在 Dart 中,你必须在构造函数的函数体之外调用 super。

假设这种情况:

/// Unmodifiable given class
class Figure{
final int sides;
const Figure(this.sides);
}

/// Own class
class Shape extends Figure{
Shape(Form form){
if(form is Square) super(4);
else if(form is Triangle) super(3);
}
}

这会引发分析错误(父类(super class)没有 0 个参数构造函数,并且表达式 super(3) 不计算为函数,因此无法调用它)。我怎样才能实现示例所需的功能?

最佳答案

在 Dart 中,使用初始化列表来调用 super 构造函数。

class Shape extends Figure{
Shape(Form form) : super(form is Square ? 4 : form is Triangle ? 3 : null);
}

如果您需要执行语句,您可以添加一个工厂构造函数,该构造函数转发到一个(私有(private))常规构造函数,例如

class Shape extends Figure{

factory Shape(Form form) {
if (form is Square) return new Shape._(4);
else if(form is Triangle) return new Shape._(3);
}
Shape._(int sides) : super(sides)
}

关于dart - 如何在 Dart 中使用复杂参数进行 super() 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50684784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com