【发布时间】:2017-04-13 09:46:38
【问题描述】:
我知道apply 方法在伴随对象中使用时是语法糖。
但是,apply 方法在下面这样用于类型定义时是什么?
type Applyn = {
def apply[A](f: A=>A, n: Int, x: A): A
}
这句话之间有区别吗? 我猜,这句话是用来给Applyn赋值通用函数值的。
例如,通过使用上面的句子,我们可以使
(Int=>Int, Int, Int)=>Int
(String=>String, Int, String)=>String
等等,只有一个类型Applyn。
这是正确的吗?
【问题讨论】:
-
它被称为
structural type,Applyn只是指任何有方法def apply[A](f: A=>A, n: Int, x: A): A的类型 -
那么,它并不是指一个函数本身,而是指任何带有
def apply[A](f: A=>A, n: Int, x: A): A的类型?