gpt4 book ai didi

kotlin - 如何将可变参数传递给 Kotlin 中的可变参数函数或构造函数?

转载 作者:IT老高 更新时间:2023-10-28 13:36:26 35 4
gpt4 key购买 nike

Kotlin 不允许我的子类将 vararg 传递给我的父类(super class)构造函数这是我的操作类:

package br.com.xp.operation

import java.util.ArrayList

abstract class Operation(vararg values: Value) : Value {
protected var values: MutableList<Value> = ArrayList()

internal abstract val operator: String
}

这是我的 SubtractionOperation 类:

package br.com.xp.operation

class SubtractionOperation private constructor(vararg values: Value) : Operation(values) {
override val operator: String
get() = "-"
}

编译说:

Type mismatch Required Value found Array

谁能解释为什么这是不可能的?

最佳答案

来自 the docs :

Inside a function a vararg-parameter of type T is visible as an array of T.

所以在 SubtractionOperation构造函数,values真的是Array<Value> .您需要使用 spread 运算符 (* ) 将这些转发到:

class SubtractionOperation private constructor(vararg values: Value) : Operation(*values) ...

关于kotlin - 如何将可变参数传递给 Kotlin 中的可变参数函数或构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47499838/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com