【发布时间】:2014-03-26 08:12:06
【问题描述】:
来自 Kotlin 文档:
如果一个函数没有返回任何有用的值,它的返回类型是 Unit。 Unit 是一种只有一个值的类型——Unit.VALUE。该值不必显式返回:
fun printHello(name : String?) : Unit {
if (name != null)
print("Hello, $name!")
else
print("Hi there!")
// We don't need to write 'return Unit.VALUE' or 'return', although we could
}
函数中返回单位的目的是什么?为什么 VALUE 在那里?这个 VALUE 是多少?
【问题讨论】:
-
我不是范畴论专家,但 AFAIK 的名字
void和unit来自范畴论。void是一个没有成员的类别,unit是一个有一个成员的类别,bool是一个有两个成员的类别(true & false)。void是从 C 继承而来的,它是泛型代码的主要麻烦。通常在 Java、C# 和 C++ 中,您需要特别处理void情况,因为它是一种奇怪的类型(它没有价值)。unit略胜一筹,因为它只有一个值,这意味着不需要特殊情况。同样在 FP 中,所有函数都采用 1 个参数,因此您需要一个无关值。 -
Unit存在是因为通用原因,代码可以顺利运行。并且它还向调用者返回该方法已经完成的信息。
标签: kotlin