如何用2个单词创建kotlin缀函数?

问题描述 投票:0回答:1
fun main(args: Array<String>) {
 var arr = IntArray(10)
 println(arr get size) // prints size of arr
 arr print all //prints all elements of arr  

我认为“获取大小”是2个infix函数,获取和大小,并且get函数采用size函数结果的参数,并且打印采用“ all”函数结果的参数,有什么解决方案吗?

kotlin
1个回答
1
投票

您试图实现的目标没有多大意义,您不应该在生产中实现这些目标。仅出于教育建议,就可以实现类似的目标:

infix fun <T> Array<T>.get(parameter: String): Int {
    when(parameter) {
        "size" -> return this.size
    }
    throw NotImplementedError()
}

用法将是:

println(array get "size")

编辑:您要呼叫array get size的版本如下所示:

enum class GetType { size }

infix fun <T> Array<T>.get(parameter: GetType): Int {
    when(parameter) {
        GetType.size -> return this.size
  }

但是,如果您想调用size而不是GetType.size,则需要将所有内容都导入到枚举类中:

import GetType.*
© www.soinside.com 2019 - 2024. All rights reserved.