【问题标题】:Scala Future Sequence Mapping: finding length?Scala 未来序列映射:寻找长度?
【发布时间】:2023-04-03 09:15:01
【问题描述】:

我想从一个方法返回一个Future[Seq[String]] 和那个Seq[String]长度。目前我正在使用来自另一个 Future[T] 的映射函数构建 Future[Seq[String]]

有什么方法可以在不等待未来的情况下做到这一点?

【问题讨论】:

    标签: scala


    【解决方案1】:

    您可以 map 覆盖当前的 Future 来创建一个新的,并将新数据添加到类型中。

    val fss: Future[Seq[String]] = Future(Seq("a","b","c"))
    val x:   Future[(Seq[String],Int)] = fss.map(ss => (ss, ss.length))
    

    【讨论】:

      【解决方案2】:

      如果你不等待就知道Seq 的长度是多少,那么类似这样;

      val t: Future[T] = ???
      
      def foo: (Int, Future[Seq[String]]) = {
        val length = 42 // ???
        val fut: Future[Seq[String]] = t map { v =>
          genSeqOfLength42(v)
        }
        (length, fut)
      }
      

      如果你不这样做,那么你将不得不像 jwvh 所说的那样返回Future[(Int, Seq[String])],或者你可以在稍后的调用函数中轻松获取长度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-07-22
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 2015-12-10
        相关资源
        最近更新 更多