1
32
虽然Python生成器很酷,但在scala中复制它们并不是最好的方法。例如,以下代码执行与所需的等效作业:
在其中,流是延迟生成的,因此在被请求之前,它不会处理任何元素,您可以通过运行以下命令来验证:
结果可以转换为
这个
另一种选择是连接各种迭代器,注意不要预先计算它们。下面是一个示例,其中还包括用于帮助跟踪执行的调试消息:
这与您的代码非常接近。而不是
所以,虽然这不是答案,但我只是觉得你找错人了。尝试在scala中编写python肯定是徒劳的。在完成相同目标的scala习惯用法上更加努力。 |
2
11
另一个基于插件的延续解决方案,这次使用或多或少封装的生成器类型,
|
3
3
要以一般的方式做到这一点,我认为你需要 continuations plugin . 简单的实现(徒手,未编译/检查):
发生什么事了
因此,在上面的例子中,每个
温和一点,这显然是一个糟糕的实现方法。但我最好在晚上晚些时候不用编译器。 |
4
3
窗体循环的scala
在
这使得为生成器实现用例变得简单而高效
初始foo示例:
初始printclass示例:
或有压痕:
输出:
|
5
0
Dsl.scala 就是你要找的。
假设您想要创建一个随机数生成器。生成的数字应该存储在一个延迟计算的无限流中,该流可以借助于内置的特定于域的关键字进行构建。
其他示例可在 Scaladoc . |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |