/**
* 结构类型,限定参数是某种类型,比如必须包含open方法
*/
class Structural { def open() = print("A class instance Opened")}
object Structural_Type {
def main(args: Array[String]): Unit = {
init(new { def open() = println("Opened")}) //匿名类,new后面没有类名
type X = { def open(): Unit } //使用type定义别名,类似c中的宏定义
/**
* 限定init函数的参数包含open方法,因此可以传入一个匿名类对象,也可以传入object对象等
* @param res
*/
def init(res: X) = res.open() //
init(new { def open() = println("Opened again")})
object A { def open() {println("A single object Opened")}}
init(A)
val structural = new Structural
init(structural)
}
}scala进阶11-结构类型
最新推荐文章于 2022-08-09 19:36:34 发布
本文通过具体的代码示例介绍了结构类型的概念及其用法,展示了如何限定参数必须包含特定的方法,例如open方法,并演示了如何传递不同类型的对象来满足这一要求。
3594

被折叠的 条评论
为什么被折叠?



