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

标签 flutter dart grpc syntactic-sugar

我是flutter(dart)gRPC的新手。我正在学习https://grpc.io/docs/languages/dart/basics/给出的教程。但是我对该函数的dart语法感到困惑。

Future<Feature> getFeature(grpc.ServiceCall call, Point request) async {
  return featuresDb.firstWhere((f) => f.location == request,
      orElse: () => Feature()..location = request);
}
实际上,我不理解f参数的含义以及为什么存在orElse。我发现=>意味着箭头功能,可以简单地理解为返回语句,但我不能说我完全理解了它。任何解释将不胜感激。

最佳答案

firstWhere方法采用PredicatePredicate只是一个接受对象并返回truefalse的函数。因此,基本上是说“给我列表中的第一个对象,其中我给您的函数返回true。orElse是一个可选的命名参数,它表示如果到达列表的末尾而不是单个当通过我刚刚提供的函数传递时,对象返回true,然后作为最后手段执行此函数,并返回它产生的任何值。您可以将Predicate视为过滤器。它接受一个对象,如果应该通过,则返回true。过滤器或false(如果它不应该通过过滤器)firstWhere基本上会检查每个元素,以查看它是否通过了过滤器,并且第一次执行该操作时,它将返回该元素。使用orElse生产者函数生成一些要返回的值,因为没有任何东西可以自己实现。(f) => f.location == request是根据其参数返回true或false的函数-这是Predicate() => Feature()..location = requestProducer。没有参数但产生值的函数。在这种情况下,其值等于新的Featurelocation值等于requestassignment评估为分配的值。级联..确保将返回Feature,而不是Point对象request
所以基本上您可以这样想:list.giveMeTheFirstObjectWhere(thisFunctionReturnsTrue, orElse: giveMeTheValueThisFunctionProvidesIfNoneOfTheElementsReturnedTrueUsingTheOtherFunction)因此,此代码的目的似乎是,检查是否已经存在Feature,如果存在,则返回第一个此类Feature。如果它不存在,它将创建一个新的Feature并返回它(但是,这个新创建的代码不会自动添加到列表/数据库中)

关于flutter - dart gRPC:函数的含义是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63843282/

相关文章:

java - bazel - netty_tcnative 错误

flutter - 局部屏幕不在 Flutter 中滚动

ios - FCM 推送通知在返回应用程序时打开,而不是显示在 iOS 的状态栏中

flutter - Flutter BlendMode 'the getter isn' t定义'

go - JSON 对我来说比 Protobuf/gRPC 快得多,Go 作为服务器,PHP 作为客户端

java - 将 Node.js Web 客户端连接到 Java gRPC 服务器时出错

flutter - 如何将列表的元素转换为单个数字

flutter - 在 Flutter 应用程序中从 pubspec for web 获取版本

rest - 如何使 flutter 中的无限滚动布局? (更新)

date - 在 Dart 中获取特定日期的开始时间