Flutter dart gRPC:函数的含义是什么?

Flutter dart gRPC:函数的含义是什么?,flutter,dart,grpc,syntactic-sugar,Flutter,Dart,Grpc,Syntactic Sugar,我是飞(镖)gRPC的新手。我正在学习教授的教程。但是我对这个函数中的dart语法感到困惑 Future<Feature> getFeature(grpc.ServiceCall call, Point request) async { return featuresDb.firstWhere((f) => f.location == request, orElse: () => Feature()..location = request); } Fut

我是飞(镖)gRPC的新手。我正在学习教授的教程。但是我对这个函数中的dart语法感到困惑

Future<Feature> getFeature(grpc.ServiceCall call, Point request) async {
  return featuresDb.firstWhere((f) => f.location == request,
      orElse: () => Feature()..location = request);
}
Future getFeature(grpc.ServiceCall调用,点请求)异步{
返回特性db.firstWhere((f)=>f.location==请求,
orElse:()=>功能()…位置=请求);
}

实际上,我不明白参数
f
是什么意思,也不明白为什么会有
orElse
。我发现
=>
表示箭头函数,它可以简单地理解为返回句,但我不能说我完全理解它。任何解释都将不胜感激。

首先,其中
方法采用一个
谓词
谓词
只是一个函数,它接受一个对象,并返回
true
false
。所以基本上是说“给我这个列表中的第一个对象,我给你的函数返回true。
orElse
是一个可选的命名参数,它表示,如果您已经到达列表的末尾,并且在通过我刚才提供的函数时没有一个对象返回true,那么作为最后手段执行此函数并返回它产生的任何值。您可以将
谓词看作过滤器。它接受一个对象,如果它应该通过过滤器,则返回
true
;如果它不应该通过过滤器,则返回
false
firstWhere
基本上会检查每个元素,看它是否通过过滤器,当某个元素第一次通过过滤器时,它会返回该元素。如果没有任何东西能够通过过滤器,它将使用
orElse
producer函数生成一些要返回的值,因为没有任何东西能够自己通过过滤器

(f)=>f.location==request
是一个基于参数返回true或false的函数,它是一个
谓词

()=>Feature()…location=request
是一个
生产者
。一种没有参数但产生值的函数。在这种情况下,一个值等于一个新的
功能
,其
位置
值等于
请求
赋值
计算为已赋值的值。级联
确保返回
功能
,而不是
对象,
请求

所以基本上你可以这样想:
list.giveMethRefirsTobjectwhere(此函数返回strue,或lse:giveMethEvalue此函数提供使用其他函数返回的元素之一)


因此,此代码的目的似乎是检查
功能是否已经存在,如果已经存在,则返回第一个此类
功能。如果它不存在,它将创建一个新的
功能
并返回它(但是,这个新创建的功能不会自动添加到列表/db)

非常感谢。我更明白。