Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 访问列表索引的安全方法_Dart - Fatal编程技术网

Dart 访问列表索引的安全方法

Dart 访问列表索引的安全方法,dart,Dart,我是新手 我很难找到一种易于阅读的方法来“安全地”访问任何索引中的列表元素 final List<String> myList = <String>[] myList.add("something") // ... String myGetter(int index) { // "heavy" way if (index < myList.length) { return myList[index] } return null; } fi

我是新手

我很难找到一种易于阅读的方法来“安全地”访问任何索引中的列表元素

final List<String> myList = <String>[]
myList.add("something")
// ...
String myGetter(int index) {
  // "heavy" way
  if (index < myList.length) {
    return myList[index]
  }

  return null;
}
final List myList=[]
myList.add(“某物”)
// ...
字符串myGetter(int索引){
//“沉重”的方式
如果(索引
如果我使用常规的
[index]
elementAt(index)
并且索引超出了边界,它会抛出一个
RandeError

当无法访问索引时,是否有返回null的方法

抱歉,如果双重发布,但我试图找到信息,但没有任何成功,+不确定是否有(联合国)官方的懈怠/不和谐,问这种“简单”的问题

根据报告:

如果索引超出范围,则抛出RangeError

因此,您可以使用:

如果你想格外小心,我想你可以在最后放一个泛型的
catch
(捕捉所有类型的抛出,而不是RangeError),但在这样一个简单的getter中,我认为这是不必要的:

[...]
 }catch (e) {
  // No specified type, handles all other types of error/exceptions
      return null;   
   }
[...]
根据报告:

如果索引超出范围,则抛出RangeError

因此,您可以使用:

如果你想格外小心,我想你可以在最后放一个泛型的
catch
(捕捉所有类型的抛出,而不是RangeError),但在这样一个简单的getter中,我认为这是不必要的:

[...]
 }catch (e) {
  // No specified type, handles all other types of error/exceptions
      return null;   
   }
[...]
您可以定义一个来捕获
范围错误
并返回
null

void main() {
  print([1, 2].get(3)); // display null
}

extension SafeLookup<E> on List<E> {
  E get(int index) {
    try {
      return this[index];
    } on RangeError {
      return null;
    }
  }
}
void main(){
打印([1,2].get(3));//显示空值
}
扩展安全查找列表{
E get(整数索引){
试一试{
返回此[索引];
}论测距误差{
返回null;
}
}
}
您可以定义一个来捕获
范围错误
并返回
null

void main() {
  print([1, 2].get(3)); // display null
}

extension SafeLookup<E> on List<E> {
  E get(int index) {
    try {
      return this[index];
    } on RangeError {
      return null;
    }
  }
}
void main(){
打印([1,2].get(3));//显示空值
}
扩展安全查找列表{
E get(整数索引){
试一试{
返回此[索引];
}论测距误差{
返回null;
}
}
}

省道列表不允许使用无效索引。在尝试时,没有内置的方法获取
null
。不在平台库中

您可以创建自己的助手函数(就像您已经做的那样):

T?tryGet(列表,整数索引)=>
索引<0 | |索引>=list.length?空:列表[索引];
(记住也要检查负指数)

根据建议,您还可以将其添加为扩展方法:

extension ListGetExtension<T> on List<T> {
  T? tryGet(int index) =>
    index < 0 || index >= this.length ? null : this[index];
}
extension ListGetExtension on List{
T?tryGet(内部索引)=>
index<0 | | index>=this.length?null:this[index];
}
这可能会让工作更愉快


(我建议不要做一些不好的事情,然后再捕捉错误,至少当你可以轻松地预先检查它是否坏的时候是这样的)。

省道列表不允许使用无效索引。在尝试时,没有内置的方法获取
null
。不在平台库中

您可以创建自己的助手函数(就像您已经做的那样):

T?tryGet(列表,整数索引)=>
索引<0 | |索引>=list.length?空:列表[索引];
(记住也要检查负指数)

根据建议,您还可以将其添加为扩展方法:

extension ListGetExtension<T> on List<T> {
  T? tryGet(int index) =>
    index < 0 || index >= this.length ? null : this[index];
}
extension ListGetExtension on List{
T?tryGet(内部索引)=>
index<0 | | index>=this.length?null:this[index];
}
这可能会让工作更愉快

(我建议不要做一些不好的事情,然后再发现错误,至少当你可以轻松地预先检查它是否坏的时候)。

你可以试试这个

void main() {

  List<int> teste = [1, 2, 3, 4];

  print(teste.get(1));
}

extension ListExtension<E> on List<E> {
  dynamic get(int value) {
    return this.contains(value) ? value : null; 
  }
}
void main(){
列表teste=[1,2,3,4];
打印(测试获取(1));
}
列表上的扩展名ListExtension{
动态获取(int值){
返回此。包含(值)?值:空;
}
}
您可以试试这个

void main() {

  List<int> teste = [1, 2, 3, 4];

  print(teste.get(1));
}

extension ListExtension<E> on List<E> {
  dynamic get(int value) {
    return this.contains(value) ? value : null; 
  }
}
void main(){
列表teste=[1,2,3,4];
打印(测试获取(1));
}
列表上的扩展名ListExtension{
动态获取(int值){
返回此。包含(值)?值:空;
}
}