我不小心键入了一些奇怪的东西,但它进行了编译,但是导致了类型运行时错误
class BoldText extends Text {
BoldText(
String data, {
textAlign: TextAlign,
}) : super(
data,
textAlign: textAlign,
);
}
您可以猜出我是哪种语言。
但这部分是什么意思?
textAlign: TextAlign
IDE提示显示
{dynamic textAlign: TextAlign}
我还是无法解密。
答案 0 :(得分:1)
textAlign
参数是一个可选的命名参数。您可以将命名参数的默认值指定为= value
或: value
。现在首选使用前一种语法,但是后者仍然有效。
如果省略方法或构造函数的任何(常规)参数的类型,则默认为dynamic
。
因此,实际上,该参数的声明为{ dynamic textAlign = TextAlign }
,这是一个名为textAlign
,类型为dynamic
和默认值为TextAlign
的命名参数。
(上面的“((正常))参数”排除了初始化诸如MyConstructor(this.myField)
之类的形式参数,它从其初始化的字段中获取其类型,而不是默认为dynamic
)。