- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图在 Kotlin 中生成列表的所有排列。有无数的例子返回 List<List<T>>
,但我的输入列表打破了这些,因为它们试图将所有结果都放入输出列表中。所以我想我会尝试制作一个返回 Sequence<List<T>>
的版本...
fun <T> List<T>.allPermutations(): Sequence<List<T>> {
println("Permutations of $this")
if (isEmpty()) return emptySequence()
val list = this
return indices
.asSequence()
.flatMap { i ->
val elem = list[i]
(list - elem).allPermutations().map { perm -> perm + elem }
}
}
// Then try to print the first permutation
println((0..15).toList().allPermutations().first())
问题是,Kotlin 似乎只是放弃并要求提供其中一个嵌套序列的完整内容 - 因此它永远不会(或至少不会很长时间)最终到达第一个元素。 (它可能会在到达那里之前耗尽内存。)
我使用 Flow<T>
进行了相同的尝试, 结果相同。
据我所知,我的代码从来没有要求它将序列转换为列表,但似乎内部的某些东西无论如何都在对我做这件事,那么我该如何阻止呢?
最佳答案
如评论中所述,您错误地处理了空基本情况。您应该返回一系列一个空列表。
// an empty list has a single permutation - "itself"
if (isEmpty()) return sequenceOf(emptyList())
如果你返回一个空序列,first
将永远找不到任何东西——你的序列总是空的——所以它将继续计算序列直到它结束,并抛出异常。 (尝试使用较小的输入,例如 0..2
!)
关于kotlin - 我如何让这个序列变得懒惰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74837873/
嘿伙计们,我正在尝试删除最后一个 _1.jpg 如果它存在于我的表达中,但我遇到了一些麻烦 场景如下。 image_name_1.jpg(应该是image_name.jpg) image_name_1
对lazy="extra"究竟能做什么,有没有很好的解释? 我看过的所有帖子都只是重复了一个事实,即它会引用 MyObject.ItsCollection.Count进入 select count(*
我只在需要时加载 Google map 。在我重构代码之前,它的工作原理如下: function initialize_map_brand() { (...) } jQuery(document)
我编写了一个生成子集子集的函数。当我按以下方式使用子集[1..]时,它导致堆栈溢出。对于“正常”(非惰性)语言来说,这是“正常”行为。现在,我想改进我的懒惰功能。 附注我不理解懒惰(我试图理解它)所以
我正在尝试伪造对带有 out 参数的方法的调用,其中包含带有一些基本逻辑的 ReturnsLazily。理想情况下,我可以根据 ReturnsLazily 通过 AssignsOutAndRefPar
以下量词在场景、速度等方面有何不同。 ?、?? 和 ?+ 都匹配 0 或 1 次。 *, *?和*+` 都匹配0 次或更多次。 +、+? 和 ++ 都匹配1 次或多次。 ?、* 和 + 是贪心。 ??
我有以下代码: @Entity public class Foo { @OneToMany(mappedBy = "Foo", fetch = FetchType.LAZY) @Cascade
你如何使用正则表达式在 Stata 中实现非贪婪匹配?或者Stata甚至有这种能力? 我想提取出现在主题标签“#”和句点“.”之间的所有文本。 示例代码: clear set obs 3 genera
我有以下 Haskell 程序用于计算整数字符串的最大和子串: {-# LANGUAGE BangPatterns #-} {-# OPTIONS_GHC -O2 #-} import Data.Fu
我想记住如何在懒球拍中进行动态编程。解决了Euler项目的问题之一后,我开始感到奇怪: 从下面的三角形的顶部开始并移至相邻的三角形 在下面的行中,数字从上到下的最大值为23。 3 7 4
我是 Hibernate 对象持久化方面的新手。我正在读一本书,试图了解惰性设置为 false、急切和立即获取之间的区别,但我没有看到任何区别。有什么帮助吗?? 提前致谢! 最佳答案 立即获取和急切获
我正在使用Hibernate做映射。我的一个类有一组long。我想在获取此对象时将 lazy 设置为 true。如果我获取一个对象并在一段时间后使用其中的集合,会导致问题吗? 最佳答案 lazy 属性
所以我知道按需求调用只是按名称调用的内存版本。在 Martin Odersky 在 Coursera 上的 FP 类(class)的第 7.3 课(惰性评估)中,他提到如果使用按名称调用来实现 Str
语境 以下代码无限循环: (defn ex13 [] (take 5 (run* [x] (listo (lcons `a (lcons `b (lcons `c x
我刚开始学习 Haskell。下面是一些用命令式编写的代码,它实现了一个简单的服务器——它打印出 HTTP 请求 header 。除了我需要在 Haskell 中重新考虑它以使用惰性列表和高阶函数这一
据我了解,Racket 有严格的即急切的评估,但可以选择惰性评估。我对函数式语言所做的有限阅读表明,惰性求值语言通常可以更具表现力,因此为所有 Racket 程序选择惰性求值选项是否存在任何“技术”缺
这个问题在这里已经有了答案: Reference - What does this regex mean? (1 个回答) 关闭 1 年前。 最近,在网络*的某个地方,我找到了正则表达式的引用,它描
有谁知道关于以下主题的“现有技术”: 我有需要一些时间才能加载的数据。它们是各种股票的历史水平。 我想以某种方式预加载它们,以避免使用我的应用程序时出现延迟 但是,在开始时将它们分块预加载会使我的应用
我想知道的是:如果有一个基类,那么在 C++ 中每个*其他类继承自是不是一个好主意。基本上,它与 C# 的 Object 具有相同的接口(interface),即: *直接接口(interface)和
我正在尝试实现自己的 boolean 类,但无法为 && 复制 native 语义。以下人为设计的代码演示了该问题: #include > class MyBool { pub
我是一名优秀的程序员,十分优秀!