gpt4 book ai didi

variables - 如何在Dart/Flutter上覆盖变量

转载 作者:行者123 更新时间:2023-12-03 04:26:19 25 4
gpt4 key购买 nike

我来自TS / JS背景,我使用 Javasctipt / Typesctipt 中的类似内容覆盖使用先前值的属性:

let arr = ['messi', 'mo salah'];
arr = arr.filter( name => name != 'messi');

// results
// arr = ['mo salah'];

现在在 Dart 中,我无法做到这一点,并且我已经搜索了docs / internet并没有找到正确语法的有用答案!

我所做的与上面的代码相同:

var arr = ['messi', 'mo salah'];
arr = arr.where( (name) => name != 'messi' );

// results
nothing showing up

我在一些使用 Dart 创建搜索的文章中看到,他们先清除了 arr,然后添加了新的过滤器arr:

var arr = ['messi', 'mo salah'];
var filter = arr.where( (name) => name != 'messi' );

// then
arr.clear();
arr.addAll(filter);

最佳答案

问题是列表上的方法在哪里返回类型为WhereIterable<String>的变量。您可以通过运行以下代码来查看它:

 void main() {
dynamic arr = ['messi', 'mo salah'];
arr = arr.where((name) => name != 'messi');
print(arr.runtimeType); // WhereIterable<String>
}

当您编写 var arr列表成为类型并且Dart是一种严格类型的语言时,您无法将 x类型的值分配给 y类型的变量,除非其中之一是动态的。 dynamic类型意味着它可以采用任何类型,例如TS中的任何类型。因此,您必须在arr上调用 toList()将其从可迭代转换为列表:
 void main() {
var arr = ['messi', 'mo salah'];
arr = arr.where((name) => name != 'messi').toList();
print(arr); // [mo salah]
}

关于variables - 如何在Dart/Flutter上覆盖变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59532797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com