List func() {
return [false, 30, "Ashraful"];
}
void main() {
final list = func();
// to access specific list item
var item = list[2];
// to check runtime type
print(item.runtimeType);
// to access the whole list
for(int i=0; i<list.length; i++) {
print(list[i]);
}
}
9条答案
按热度按时间5anewei61#
Dart不支持多个返回值。
你可以返回一个数组
或者,如果你想输入值,可以使用
Tuple
类,就像https://pub.dartlang.org/packages/tuple包提供的那样。另请参阅
either
,了解返回值或错误的方法。z0qdvdin2#
我想补充的是,Go中多个返回值的主要用例之一是错误处理,Dart以自己的方式处理异常和失败的承诺。
当然,这留下了一些其他用例,所以让我们看看当使用显式元组时代码的外观:
我最喜欢它的一点是,一旦你的快速实验项目真正开始,你开始添加功能,需要添加更多的结构来保持最佳状态,它就不需要做太多的改变。
所以,是的,它并没有比Java有太大的改进,但是它很有效,很清晰,并且对于构建UI来说相当有效。我真的很喜欢我如何快速地将东西组合在一起(有时在工作休息时开始使用DartPad),然后在我知道项目将继续存在并增长时添加结构。
vhipe2zx3#
创建一个类:
随便你怎么叫!
relj7zay4#
你可以创建一个类来返回多个值Ej:
生成值的函数:
打印:
pgpifvop5#
返回多个值的正确方法是将这些值存储在一个类中,无论是您自己的自定义类还是
Tuple
。然而,为每个函数定义一个单独的类非常不方便,并且使用Tuple
s可能容易出错,因为成员没有有意义的名称。另一种方法(诚然很粗糙,也不太像Dart-istic)是试图模仿C和C++通常使用的输出参数方法。例如:
对于调用者来说,在任何地方都必须使用
variable.value
肯定会有点不方便,但在某些情况下,这可能是值得的。wlp8pajw6#
Dart正在完成records,本质上是一个更奇特的元组。
应该是在一个稳定的释放与 dart 3。
它已经在experiments flags中可用。
bvuwiixz7#
你可以使用dartz包返回多种数据类型
https://www.youtube.com/watch?v=8yMXUC4W1cc&t=110s
mwkjh3gx8#
你可以使用
Set<Object>
来返回多个值,zzlelutf9#
在Dart中的这种情况下,一个简单的解决方案可以返回一个列表,然后根据您的需求访问返回的列表。您可以通过索引访问特定值,或者通过简单的for循环访问整个列表。