如何在scala中实现延迟序列(iterable)?
发布时间:2020-12-16 08:59:24 所属栏目:安全 来源:网络整理
导读:我想实现一个惰性迭代器,它在每个调用中产生一个3级嵌套循环中的下一个元素. scala中有类似于c#的这个片段: foreach (int i in ...) { foreach (int j in ...) { foreach (int k in ...) { yield return do(i,j,k); } } } 谢谢,Dudu 解决方法 如果将迭代器
我想实现一个惰性迭代器,它在每个调用中产生一个3级嵌套循环中的下一个元素.
scala中有类似于c#的这个片段: foreach (int i in ...) { foreach (int j in ...) { foreach (int k in ...) { yield return do(i,j,k); } } } 谢谢,Dudu 解决方法
如果将迭代器连接在一起,则会得到一个遍历两者的迭代器. reduceLeft方法有助于将整个集合连接在一起.从而,
def doIt(i: Int,j: Int,k: Int) = i+j+k (1 to 2).map(i => { (1 to 2).map(j => { (1 to 2).iterator.map(k => doIt(i,k)) }).reduceLeft(_ ++ _) }).reduceLeft(_ ++ _) 将产生你想要的迭代器.如果你想让它比那更懒,你也可以在前两个(1到2)之后添加.iterator. (当然,用你自己更有趣的收藏或范围替换每个(1到2).) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何把Bootstrap和JQuery在不能上网环境中生效并用Maven来管
- BootStrap3.0 深入理解 Item1 -- 学习从现在开始
- shell – 在Sublime Text中的同一窗口中打开文件和文件夹
- angularjs – 无法加载模板问题
- angularjs – 指令不能”要求:ngRepeat’
- angularjs – 如何更改角质材料中md-icon的颜色?
- bash – find,xargs:为每个文件执行命令链
- angularjs – Ionic – 如何在登录页面上删除sidemenu?
- Angular4.x+Ionic3 踩坑之路之一
- angularjs – Dragula angle如何访问模型项目