Tag: 科特林

将parameter passing给kotlin中的自定义getter

我一直在阅读关于Kotlin的物业 ,包括习惯的获得者和制定者。 但是,我想知道是否有可能创建一个具有额外参数的自定义getter。 例如,在Java中考虑以下方法: public String getDisplayedValue(Context context) { if (PrefUtils.useImperialUnits(context)) { // return stuff } else { // return other stuff } } 请注意, PrefUtils中的静态方法必须将Context作为参数,因此不能删除此选项。 我想在Kotlin中这样写: val displayedValue: String get(context: Context) { return if (PrefUtils.useImperialUnits(context)) { // stuff } else { // other stuff } } 但是我的IDE以红色突出显示了所有这一切。 我知道我可以在我的类中创建一个函数来获取显示的值,但是这意味着我将不得不在Kotlin中使用.getDisplayedValue(Context) ,而不是能够通过名称来引用属性,如.displayedValue 。 有没有办法像这样创建一个自定义的getter? 编辑:如果没有,最好为此写一个函数,或将Context传递给类构造函数的参数?

如何将数字字符(0-9)转换为数字值?

Char.toInt()返回字符的ASCII码,而不是数字值。 那么如何将Char转换为具有正确数值的整数呢?

如何将一个二维数组作为parameter passing给Kotlin中的一个函数

import java.io.* import java.util.* fun main(args: Array) { val sc = Scanner(System.`in`) var grid = Array(9, {IntArray(9)}) for(i in 0..grid.size – 1) { var rowArray = IntArray(9) for(j in 0..rowArray.size – 1) { rowArray[j] = sc.nextInt() } grid[i] = rowArray } for(row in grid) { for(j in row) { print(j) print(” “) } println(“”) } […]

使用参数化函数实现接口

假设我有一个接口 interface A { fun calculate(n: Int): Int } 我想在类B实现A (比如说),以便在B的构造函数中提供calculation ,如下所示: class B (f : (Int) -> Int) : A { override fun calculate(n: Int): Int //…somehow assign f to calculate } 这可以做到没有B的财产吗? 嗯…这个作品: interface A { val calculate: (n: Int) -> Int } class B(f: (Int) -> Int) : A { override val […]

我怎样才能直接从Kotlin源使用Java String方法(split)?

做一些分析,看来我的瓶颈是Kotlin kotlin.CharSequence.split()扩展函数。 我的代码只是做这样的事情: val delimiter = ‘\t’ val line = “example\tline” val parts = line.split(delimiter) 你可能会注意到, parts是一个List 。 我想直接使用Java的split进行基准测试,它会返回一个String[]并且效率可能更高。 如何直接从Kotlin源码调用Java的String::split(String) ?

在Kotlin接收器对象和扩展

我试图熟悉更先进的kotlinfunction,但我不知道为什么我的小代码示例编译和打印“测试A”,而不是打印“测试B”。 有人可以告诉我为什么测试B不打印? class One{ fun delegate(operation: One.()-> Unit){ operation() } fun main(args: Array){ val one= One() fun One.doIt(){ println(“Test A”) } one.delegate { doIt() } //prints Test A one.delegate { fun One.doItDifferently(){ println(“Test B”) //not printed } } }

增量会导致构建失败

import Foo.x object Foo { var x = 5 } fun main(args: Array) { ++x // or x += 1 } 当我尝试编译它时,我得到这个错误 。 但是,当我用x = x + 1替换++x ,一切都编译得很好。 我对这个语言很陌生,不明白是什么问题。 这是一个预期的行为还是需要一个错误报告?

在Kotlin中访问同一类的不同实例的字段

考虑这个Kotlin代码: var parent: T? = null get() = if (isParent) this as T else field set(value) { field = if (value == null) null else value.parent } val isParent: Boolean get() = parent == null var description = “” get() = if (isParent) field else parent!!.description set(value) { if (isParent) field = value else parent!!.description […]

比较没有ID的Kotlin中的数据类

我在Kotlin有一个数据类,它有多个属性,其中之一就是ID 。 但是当我真的在代码中使用compare函数时,我想在比较时排除这个ID属性。 有什么办法做,除了手动锅炉comparefunction?

阅读行并在最后添加一些内容

我是kotlin新手。 我试图逐行读取文件,并在每个文件末尾添加一些内容。 我的文件在阅读之前: abcd;abcd;abcd; bcda;bcda;bcda; dacb;dacb;dacb; 我的文件阅读和追加后: abcd;abcd;abcd;smth1 bcda;bcda;bcda;smth2 dacb;dacb;dacb;smth3 我有一行一行地阅读文件的代码,但你能告诉我如何将字符串添加到每个? val pathToFile = “abc.txt” val scan = Scanner(File(pathToFile)) while (scan.hasNextLine()) { val line = scan.nextLine() var lista = ArrayList() lista = line.split(“;”) as ArrayList println(lista.get(0) + ” and ” + lista.get(1) + ” and ” + lista.get(2)) }