Tag: function编程

如何在Kotlin中用动态编程实现一个纯函数?

我一直在试图将我的一些代码转换为纯函数,以便学习如何以function的方式使用Kotlin,通过这个简单的代码片段,我想不出任何方法来使我的calculateFibonacci函数成为一个纯函数。 我意识到一个潜在的递归解决方案,但是对于潜在的堆栈溢出呢,Kotlin是否实现了Tail Call Optimization? 例: val fibonacciValues = hashMapOf(0 to BigInteger.ONE, 1 to BigInteger.ONE); // * TODO investigate how to do dynamic programming with a pure function ** // private fun calculateFibonacci(n: Int): BigInteger? { if (fibonacciValues.contains(n)) { return fibonacciValues.get(n) } else { val f = calculateFibonacci(n – 2)!!.add(calculateFibonacci(n – 1)) fibonacciValues.put(n, f) return f […]

Android上的Kotlin:将光标映射到列表

在Kotlin中,遍历Android Cursor对象并将结果放入列表中的最佳方法是什么? 我的自动转换的Java: val list = ArrayList() while (c.moveToNext()) { list.add(getStringFromCursor(c)) } 有没有更习惯的方式? 特别是,它可以在只读列表中进行一次分配吗? 例如… val list = /*mystery*/.map(getStringFromCursor) …或其他安排,其中列表分配完整。

尾巴rec kotlin名单

我正在尝试做一些操作,只会在Kotlin中导致一个StackOverflow。 知道了,我记得Kotlin支持tailrec函数,所以我试着做: private tailrec fun Turn.debuffPhase(): List { val turns = listOf(this) if (facts.debuff == 0 || knight.damage == 0) { return turns } // Recursively find all possible thresholds of debuffing return turns + debuff(debuffsForNextThreshold()).debuffPhase() } 当我惊讶IDEA没有认识到它是一个tailrec ,我试图tailrec它的扩展function,并使其正常的function: private tailrec fun debuffPhase(turn: Turn): List { val turns = listOf(turn) if (turn.facts.debuff == 0 || […]

Kotlin函数参考

设records为流/集合,并extract将数据转换为此类集合的元素的函数。 Kotlin有没有办法写出来? records.map {extract(it)} 没有明确地应用(it) ? 例如records.map(extract)或records.map(extract)