如果您将 Unit
类型分配给 Kotlin 中的变量会怎样?
让我们以这段小代码为例:
val list = listOf("Hey", "this", "code", "runs")
val unit = list.forEach {
print(it.plus(" "))
}
输出:
Hey this code runs
为什么这段代码可以运行?此示例中 val unit
的值是多少?我的意思是,难道不应该有一个 unit.invoke()
函数来实际运行代码吗?
提前致谢!
最佳答案
在 Kotlin 中,Unit
是一种只有一个值的类型:也称为 Unit
的对象。
它与Java中的void
类型目的相同,但实现方式不同。 (这是因为 Kotlin 借鉴了函数式语言的思想,其中每个表达式都有一个值。因此,如果一个函数没有任何有用的返回值,它会返回 Unit
。这将它与 的方法区分开来从不 返回,声明为 Nothing
类型,没有 值。)
您的代码完全有效; forEach()
执行并打印其输出,然后返回 Unit
值。 (forEach()
是您调用只是因为它的副作用而不是因为它的返回值的函数之一。这就是为什么您通常不会费心用返回值;但是你已经证明如果你真的想的话你可以!)
因此您的unit
被推断为Unit
类型,并将被分配Unit
值。
你可以在之后打印它来检查:
println(unit)
打印“kotlin.Unit
”,这是对 Unit
值调用 toString()
的结果。
关于kotlin - 将单位类型分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852960/