我无法理解kotlin中string.kt的源代码实现

在kotlin源代码中,我无法理解如何实现String.kt的长度,如下所示: package kotlin public class String : Comparable, CharSequence { companion object {} /** * Returns a string obtained by concatenating this string with the string representation of the given [other] object. */ public operator fun plus(other: Any?): String public override val length: Int public override fun get(index: Int): Char public override fun subSequence(startIndex: Int, […]

Kotlin:排序| 交换操作的位置

我在Kotlin中实现了Quicksort算法。 为此,我使用types参数和单个函数( sort)创建了一个接口ISort 。 为了排序,我需要交换操作。 我想知道这个交换function的最佳位置是什么。 我的想法: 1)不幸的是,在Kotlin中,不能使接口function得到保护。 因此,每个class级都可以在其实施中看到交换,这并不太好(尽管也不算太差,我同意)。 2)把它放在QuickSort实现中更糟,因为可能有几个需要交换function的ISort接口的实现。 3)我的下一个想法是创建一个单例对象,但Kotlin允许具有types参数的对象。 这里是接口定义: interface ISort { fun sort(toSort: MutableList): MutableList // 1) Putting swap here has a too high visibility } 这里是QuickSort类的框架: class QuickSort : ISort { override fun sort(toSort: MutableList): MutableList { doQuickSort(toSort) // Internally uses swap return toSort } // 2) Putting swap here […]

尾巴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 DialogFragment editText可编辑始终为空

所以,我使用的Kotlin扩展很简单,但是我无法从edittext获取字符串 这里是我的代码: override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val v = activity.layoutInflater .inflate(R.layout.dialog_group, null) v.add_group_button.setOnClickListener(addListener) return AlertDialog.Builder(activity) .setView(v) .create() } private var addListener: View.OnClickListener = View.OnClickListener { val groupNameInput: String = view?.group_edit_text?.text.toString() } 当我按下添加按钮groupNameInput总是返回null为什么?

将java类文件转换为kotlin会导致编译错误

我有一个Java类文件工作正常,但如果我将它转换为Kotlin它会造成一些问题。 这是一个Java版本 public class CallbackWrapper implements Callback { private Wrapper wrapper; public CallbackWrapper(Wrapper wrapper) { this.wrapper = wrapper; } public void onFailure(Call call, Throwable t) { wrapper.onResult(t, null); } public void onResponse(Call call, Response response) { wrapper.onResult(null, response); } public interface Wrapper { void onResult(@Nullable Throwable t, @Nullable Response response); } } 这就是我如何使用这个类没有任何问题… request.enqueue(CallbackWrapper { […]

Iterator.Remove在Kotlin HashMap中的等价forms?

对不起,如果这是一个愚蠢的问题 – 但在Java中,我习惯做下面的事情: Iterator whatever = entrySet.iterator() while (whatever.hasNext()) { for (int i = 0; i < 4; i++) { if (i == 3) { whatever.remove(whatever.next().key) } } } (伪代码和逻辑没有意义) 但是,Kotlin中的hashmap中不存在“remove”函数。 我知道你可以使用removeIf作为一个单一的条件,但我想循环通过一堆不同的条件之前,我决定要删除什么 – 所有没有避免并发修改exception。 在Kotlin中这样做的方法是什么? 感谢您的时间!

Kotlin为assertThat(foo,instanceOf(Bar.class))

你将如何用Kotlin编写assertThat(foo, instanceOf(Bar.class)) ? 似乎它不喜欢.class 如果可能的话,我想去找一个比assertTrue(foo is Bar)更“精确”的断言

在Kotlin中有属性的函数types

我可以在TypeScript中指定这个(因此可以在JavaScript中完成): interface Foo { (arg: any): void foo: string } Kotlin能达到同样的效果吗?

android – 使用Kotlin调用void

我遇到了Retrofit 2的一个问题。我想使用Call进行调用,而不处理响应主体,但它不适用于Kotlin。 我需要用什么来代替Void ?

我可以使用Java扩展一个Kotlin授权类吗?

我想在Java中扩展一个Kotlin委托类,并得到以下错误: 不能从最终的“派生” 看下面的代码。 我想要做的是装饰一个类的方法。 任何想法为什么Kotlin定义Derived为最终? 有没有办法Derived不是最终的,所以我可以inheritance它? Java的: new Derived(new BaseImpl(10)) { // Getting the error on this line: `Cannot inherit from final ‘Derived’` }; 科特林: interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b *从这里的例子: https : […]