2 回答
TA贡献1963条经验 获得超6个赞
你可以 - 在 Scala 中。
类的方法返回this.type:
class C {
var x = 0
/** Sets `x` to new value `i`, returns the same instance. */
def with_x(i: Int): this.type = {
x = i
this // must be `this`, can't be arbitrary `C`
}
}
保证返回完全相同的数组的就地排序(这里并没有真正排序任何东西):
def sortInPlace[A: Ordered](arr: Array[A]): arr.type = {
/* do fancy stuff with indices etc. */
arr
}
如果您尝试返回不同的数组,
def badSortInPlace(arr: Array[Int]): arr.type = Array(1, 2, 3) // won't compile
你会在编译时得到一个错误:
error: type mismatch;
found : Array[Int]
required: arr.type
def badSortInPlace(arr: Array[Int]): arr.type = Array(1, 2, 3)
^
这称为单例类型,并在规范中进行了解释。
TA贡献1848条经验 获得超2个赞
在具有参数多态性的语言中,任何类型的函数
a → a
必须是恒等函数:因为该函数在 中是多态的a
,所以它不可能知道关于 的任何信息a
,特别是它不可能知道如何构造一个a
. 由于它也不采用世界值或IO
monad 或等价物,因此它无法从全局状态、数据库、网络、存储或终端获取值。它也不能删除该值,因为它必须返回一个a
.
因此,它唯一能做的就是返回a
传入的内容。
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报