Function 如何将数据类中的数据传递给函数

Function 如何将数据类中的数据传递给函数,function,class,kotlin,Function,Class,Kotlin,我需要使用一个函数来打印数据类中的数据,并在这个网站上阅读了一些其他答案,但我仍然不清楚如何做。谢谢你的帮助 data class Chemical( val key: String, val name : String, val formula : String ) fun printans(Chemical(q):: data class) { println("Key = $q.key, Name = $q.name Formula = $q.form

我需要使用一个函数来打印数据类中的数据,并在这个网站上阅读了一些其他答案,但我仍然不清楚如何做。谢谢你的帮助

data class Chemical(
    val key: String,
    val name : String,
    val formula : String
)

fun printans(Chemical(q):: data class) {

    println("Key = $q.key,  Name = $q.name Formula = $q.formula")

}

fun main(args: Array<String>) {

    val cuso4 = Chemical("001", "Copper(II) sulphate", "CuSO4")
    val cacl2 = Chemical("002", "Calcium chloride", "CaCl2")

    printans(cuso4)
    printans(cacl2)
}

添加大括号并使用
q:Chemical
代替
Chemical(q)::data class

fun printans(q: Chemical) {
    println("Key = ${q.key},  Name = ${q.name} Formula = ${q.formula}")
}


您的语法错误,因为
Chemical
是一个数据类,您甚至不需要自己构建字符串,它已经为您构建好了:

fun printans(c: Chemical) {
    println(it)
}
化学品(键=foo,名称=bar,公式=baz)

因此,您甚至可以简化为
println(c)
,而不使用专用函数,因为它只做
println
所能做的事情

如果此格式不是您想要的格式,我建议覆盖
化学
toString

data class Chemical(/* ... */) {
    fun toString(c: Chemical) = "Key = ${c.key},  Name = ${c.name} Formula = ${c.formula}"
}

这样,无论您将其传递到哪里,输出都将始终是您想要的格式,因为
println
调用
toString

您可以使用Kotlin扩展功能特性! 像这样:

只要调用它:

val chemical = Chemical("Key", "Name", "Formula")
chemical.printans()

您可以阅读更多关于扩展函数的内容

,并将函数声明修复为
funprintans(q:Chemical){
Chemical(q)::数据类
无效语法询问前阅读文档始终是一个很好的做法。非常感谢您的提示和有用的回答!我以为我已经尝试了所有可能的语法组合,但错过了一个。再次感谢!
printans
prinntln
似乎不匹配。
fun Chemical.printans(){
println("Key = ${this.key},  Name = ${this.name} Formula = ${this.formula}")
}
val chemical = Chemical("Key", "Name", "Formula")
chemical.printans()