Flutter dart gRPC:函数的含义是什么?
我是飞(镖)gRPC的新手。我正在学习教授的教程。但是我对这个函数中的dart语法感到困惑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
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)非常感谢。我更明白。