【发布时间】:2021-10-12 02:52:39
【问题描述】:
代码:
void main() { runApp(MyApp());}
和
代码:
Void main() => runApp(MyApp());
【问题讨论】:
标签: dart
代码:
void main() { runApp(MyApp());}
和
代码:
Void main() => runApp(MyApp());
【问题讨论】:
标签: dart
我将提供详细的解释,它可能会帮助您深入了解。
Dart 中的函数的行为很像 JavaScript 中的函数。它们可以定义为类似于我们的 void 函数的方法,并且它们的行为类似于一等对象,这意味着它们可以存储在变量中、作为参数传递或像函数的正常返回值一样返回。
从上面的例子可以看出,创建函数的方法有很多种。未定义返回类型(如使用 var 语法)的函数具有动态返回类型。如果函数定义中的参数没有类型,则它们隐式具有动态类型。
粗箭头表达式
胖箭头表达式或 Lambda 函数表达式是在单行 using => syntaxAKA 胖箭头上编写函数的语法。这类似于 JavaScript 的 ES6 Fat Arrow 函数语法。这是用单个语句编写函数的一种更简洁的方法。
【讨论】:
差别很小。
SomeType name(args) => expression; 形式的函数几乎完全等同于SomeType name(args) { return expression; }。
Dart 的void 类型与其他类似语言对void 的使用略有不同。该类型不是 empty 类型,而是等效于 Object?,因为它可以包含任何值,它只是静态地阻止您使用该值。
这种设计最初是在 Dart 1 中选择的,因为它允许返回有用值的方法覆盖返回 void 的方法。
Dart 通常不允许在void 返回函数中使用return value; 语句,因为这可能是一个错误,除非value 的类型本身就是void(或dynamic 或Null)。
所以
void main() => runApp(MyApp());
等价于
void main() {
return runApp(MyApp());
}
但是由于main 的返回类型为void(并且 因为它是主要方法),所以没有人会查看返回的价值。
因此,简而言之,您可以使用=> voidExpression; 作为 { voidExpression;} 的简写,因为没有人会注意到返回的值。
【讨论】:
逻辑上没有区别。
我们使用:
void main() => runApp(MyApp());
当函数只使用一行时。但是,我们使用尖括号“{}”来表示不同行的复杂性。
例如:
void main() {
runApp(MyApp());
}
注意使用多于一行。
通常在你的情况下,你不会使用第二种方法,我建议你坚持第一种。
希望对您有所帮助! :)
【讨论】: