Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
Variables 如何覆盖省道/颤振上的变量_Variables_Flutter_Dart_Syntax - Fatal编程技术网

Variables 如何覆盖省道/颤振上的变量

Variables 如何覆盖省道/颤振上的变量,variables,flutter,dart,syntax,Variables,Flutter,Dart,Syntax,我来自TS/JS背景,在Javasctipt/Typesctipt中,我使用它之前的值覆盖属性: 让arr=['mesi','mosalah']; arr=arr.filter(name=>name!='mesi'); //结果 //arr=['mosalah']; 现在在Dart中,我做不到这一点,我已经搜索了文档/互联网,没有找到正确语法的有用答案 我所做的与上述代码相同: var-arr=['mesi','mosalah']; arr=arr.where((name)=>name!=“梅

我来自TS/JS背景,在Javasctipt/Typesctipt中,我使用它之前的值覆盖属性:

让arr=['mesi','mosalah'];
arr=arr.filter(name=>name!='mesi');
//结果
//arr=['mosalah'];
现在在Dart中,我做不到这一点,我已经搜索了文档/互联网,没有找到正确语法的有用答案

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

var-arr=['mesi','mosalah'];
arr=arr.where((name)=>name!=“梅西”);
//结果
什么也没出现
我在一些使用dart创建搜索的文章中看到,他们先清除
arr
,然后添加新的过滤器arr:

var-arr=['mesi','mosalah'];
var filter=arr.where((name)=>name!='mesi');
//然后
arr.clear();
arr.addAll(过滤器);

我在这里写的时候找到了问题的答案

我错过了什么?是或是TS/JS中的
filter
dart中的
where
之间的差异,该过滤器返回
array
类型,但
where
不是,我必须通过在末尾添加
toList()
将其转换为数组

因此,我在dart中的最终代码应该如下所示:

var-arr=['mesi','mosalah'];
arr=arr.where((name)=>name!='mesi').toList();
//结果
//arr=['mosalah'];

我在这里写的时候找到了问题的答案

我错过了什么?是或是TS/JS中的
filter
dart中的
where
之间的差异,该过滤器返回
array
类型,但
where
不是,我必须通过在末尾添加
toList()
将其转换为数组

因此,我在dart中的最终代码应该如下所示:

var-arr=['mesi','mosalah'];
arr=arr.where((name)=>name!='mesi').toList();
//结果
//arr=['mosalah'];

您可以使用
retainWhere
,结果:
[无沙拉]

List<String> x = ["messi", "no salah"];
x.retainWhere((f) => f != "messi");
print(x);
List x=[“梅西”,“没有沙拉”];
x、 保留位置((f)=>f!=“梅西”);
印刷品(x);

您的代码将创建一个新列表,但此代码将更新您的列表。您可以选择对您的目的有用的内容。

您可以使用
retainWhere
,结果:
[no salah]

List<String> x = ["messi", "no salah"];
x.retainWhere((f) => f != "messi");
print(x);
List x=[“梅西”,“没有沙拉”];
x、 保留位置((f)=>f!=“梅西”);
印刷品(x);

您的代码将创建一个新列表,但此代码将更新您的列表。您可以选择对您的目的有用的方法。

问题在于列表上的方法在何处返回类型为
WhereIterable
的变量。您可以通过运行以下代码查看它:

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

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

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