如何在scala中实现惰性序列(可迭代)?

2023-11-26

我想实现一个惰性迭代器,它在 3 级嵌套循环中的每次调用中生成下一个元素。

scala 中是否有与 c# 的这段代码类似的内容:

foreach (int i in ...)
    {
        foreach (int j in ...)
        {
            foreach (int k in ...)
            {
                 yield return do(i,j,k);
            }
        }
    }

谢谢杜杜


Scala 序列类型都有一个 .view 方法,它生成集合的惰性等效项。您可以在 REPL 中尝试以下内容(发出后:silent阻止它强制集合打印命令结果):

def log[A](a: A) = { println(a); a } 

for (i <- 1 to 10) yield log(i)

for (i <- (1 to 10) view) yield log(i)

第一个将打印出数字 1 到 10,第二个将打印出数字 1 到 10,直到您实际尝试访问结果的这些元素。

Scala 中没有与 C# 直接等效的内容yield语句,它暂停循环的执行。您可以使用以下命令实现类似的效果分隔延续这是为 scala 2.8 添加的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在scala中实现惰性序列(可迭代)? 的相关文章

  • 从 scala 的 Type 获取 ParameterizedType?

    有用的是 scala 的 Universe typeOf 保留了类的类型参数 import scala reflect runtime universe case class X T TypeTag val t typeOf T e g S
  • java.lang.OutOfMemoryError:Scala 上超出了 GC 开销限制

    我是 Scala 开发人员 我在Routes它包含的文件1008行如果我添加另一行 则会抛出下面的错误 Uncaught error from thread sbt web scheduler 1 shutting down JVM sin
  • Scala:解决“非法循环引用”

    我正在尝试实现一个基于 HashMap 的树 它支持给定根键的 O 1 子树查找 为了实现这个目标 我正在努力做到以下几点 scala gt type Q HashMap Char Q
  • Scala API 2.10.*:Function2.and然后发生了什么?

    我正在阅读 Joshua Suereth 所著的 Scala in Depth 我购买这本书是为了了解作者的明确能力 我在第 3 页上 在出现一堆拼写错误和不连贯的格式之后 好吧 我已经开始容忍这些错误 我偶然发现了以下示例 该示例涉及解决
  • Scala Vector 折叠语法(/: 和 :\ 和 /:\)

    有人可以提供一些例子来说明如何 and http www scala lang org archives downloads distrib files nightly docs library scala collection immut
  • K均值||用于 Spark 上的情感分析

    我正在尝试编写基于Spark的情感分析程序 为此 我使用了 word2vec 和 KMeans 聚类 从 word2Vec 我在 100 维空间中得到了 20k 个单词 向量集合 现在我正在尝试对这个向量空间进行聚类 当我使用默认并行实现运
  • Scala“对象”的继承

    我有这个Java代码 class Super public static void foo bar public static void bar out println BAR public static void main String
  • 凿子“Enum(UInt(), 5)”失败

    当我尝试使用 Chisel 构建 FSM 时 我使用了 Enum 如 Chisel 教程所述 然而 我遇到了这样的错误 my code val sIdle s1 s2 s3 s4 Nil Enum UInt 5 但是 当我执行时sbt ru
  • 生成 k 个成对独立的哈希函数

    我正在尝试实施一个计数最小草图 http en wikipedia org wiki Count Min sketchScala中的算法 所以我需要生成k个成对独立的哈希函数 这是一个比我以前编写过的任何东西都低的级别 除了算法类之外 我对
  • 测试期权价值的更好方法?

    我经常发现自己Option T 对于某些类型T并希望根据某个值来测试期权的价值 例如 val opt Some oxbow if opt isDefined opt get lakes do something 以下代码是等效的 并且不需要
  • 作为单例集合的选项 - 现实生活中的用例

    标题几乎概括了这一点 Option作为单例集合有时会令人困惑 但有时它允许一个有趣的应用程序 我脑子里有一个例子 并且想了解更多这样的例子 我唯一的例子是运行for对的理解Option List T 我们可以执行以下操作 val v Som
  • 错误:使用替代方法写入重载方法值:

    我正在尝试读取固定宽度的文件并将其写入文本文件 下面是代码 输入文件布局字段的长度 4 10 3 5 3 1 1 5 7 094482018 07 10 022 14012 000 0 30000A 002290 059412018 07
  • Scala 修饰符和类型参数化

    我正在创建一个记忆类 每个类都会记忆一个函数类型并具有以下定义 class MemoizedFunction1 T1 R f T1 gt R private this val cache mutable Map T1 R def apply
  • 在 Scala 中定义具有多个隐式参数的函数

    如何定义具有多个隐式参数的函数 def myfun arg String implicit p1 String implicit p2 Int doesn t work 它们必须全部放入一个参数列表中 并且该列表必须是最后一个 def my
  • Scala 中简单表达式的非法开始

    我刚刚开始学习scala 在尝试实现递归函数时 我在 Eclipse 中收到错误 简单表达式的非法开始 def foo total Int nums List Int if total nums sorted head 0 0 else r
  • 这个错误是什么意思(SimpleHttpConnectionManager 被错误使用)?

    我正在尝试从 ElasticSearch 中读取数据到 Spark conf es resource sflow sflow es nodes ES01 es query some query rdd sc newAPIHadoopRDD
  • scala 中“迭代 Seq 或如果为空”的更好版本?

    是否有更短 更好的方法来执行以下操作 mySeq map elmt gt do stuff if mySeq isEmpty some other stuff Ps 我正在使用 PlayFramework 这意味着在模板中使用 所以如果我错
  • 在 Akka Actor 中使用 Future

    我刚刚开始学习 Scala 中的 Akka Actors 我的理解是 Actor 收到的消息会在 Actor 的邮箱中排队 并一次处理一个 通过一次处理一条消息 可以缓解并发问题 竞争条件 死锁 但是 如果 Actor 创建一个 futur
  • 使用新的反射API,如何找到类的主构造函数?

    您可以像这样获取类的所有构造函数 import scala reflect runtime universe val ctor typeOf SomeClass declaration nme CONSTRUCTOR asTerm alte
  • 将数组中的值提取到元组中

    有没有一种简单的方法可以将列表的值提取到 Scala 中的元组中 基本上是这样的 15 8 split map toInt mkTuple 15 8 或者我可以采取其他方式 val x y 15 8 split map toInt 如果你把

随机推荐