Dart Extension:为列表动态索引

Dart Extension: dynamically index for List

提问人:Alex 提问时间:11/13/2023 最后编辑:julemand101Alex 更新时间:11/13/2023 访问量:83

问:

你能给我一些关于在 Dart 中为 List 对象制作动态索引扩展的建议吗

以下是我的意思:

final List<String> myList = ['one', 'two', 'three'];

// by default, get an value at [index] belike:
myList[1];

// but what I want to implement belike:
myList.1;
myList.0;
myList.2;
myList.5; // ==> will throw exception

也许他们看起来很愚蠢,但对我来说,这太酷了,太花哨了

感谢您的所有帮助和建议

列出 dart 扩展方法

评论

1赞 Randal Schwartz 11/13/2023
不。只是没有。这不会发生。您可以添加方法来响应您尝试的任何未定义的方法,但为什么呢?
3赞 jamesdlin 11/13/2023
Dart 语法不允许标识符以数字开头,因此无法完全按照您的描述执行操作。如果你真的愿意,你可以使用代码生成来生成一个固定数量的 getter 的扩展,比如说,、 、 等,它们只是调用 、 等。然而,这样做将是一个糟糕的主意,因为它不适用于任意大的索引,并且会使你的代码的可读性降低,并且更加复杂,没有任何好处。index0index1this[0]this[1]

答:

-1赞 Coding Express 11/13/2023 #1
import 'package:amra/amra.dart' as amra;

void main(List<String> arguments) {

MyList._0;
MyList._1;
MyList._2;



  }
class MyList{
static List<String> myList = ['one', 'two', 'three'];
static String _0(){
return MyList.myList[0];
}
static String _1(){
 return MyList.myList[1];
}
static String _2(){
 return MyList.myList[2];
}




  }

评论

1赞 julemand101 11/13/2023
这个“答案”的问题:不是问题的答案,格式不正确的代码,不需要的导入,无法扩展。
0赞 Coding Express 11/13/2023
对不起,我从这个平台上离开了.我对这个评论感到非常不高兴........
0赞 julemand101 11/14/2023
你不会被迫在这个网站上做出贡献,我也不会被迫把我的批评包装在绒毛中,只是为了确保你的感情不会受到伤害。我建议从我的评论中吸取教训,而不仅仅是“不开心”。我知道你只是想帮忙,但在发布之前进行最少的质量检查是很重要的,例如,确保你的代码看起来像样和漂亮。Dart 带有一个内置的代码格式化程序,我建议你在发布代码之前至少使用该功能。你的代码也应该简短明了,没有绒毛。
0赞 julemand101 11/14/2023
但这并不能改变您的代码无法扩展的问题,因为您被迫为要从列表中请求的每个可能的索引编写这些索引函数。另一个问题是,-prefixed members 在 Dart 中意味着“私有”,所以你不能真正创建一个包含这个功能的库,因为你的所有方法都会被隐藏。__
0赞 julemand101 11/14/2023
最后,你真的应该阅读关于这个问题的评论(在制定解决方案之前),你可以看到很多人首先说这是一个糟糕的主意。因此,您最终花费了时间基于被认为是糟糕的设计创建解决方案。因此,您真的不能抱怨对这个解决方案的批评和反对票,因为这个解决方案正是被劝阻的那种解决方案。