// -- if it walks like a duck and talks like a duck, it must be a duck
def f (eater: {def eat(s:String):String}) (food:String) {
println(eater.eat(food))
}
class Dog {
def eat (food:String):String = {
s"Dog eat $food"
}
}
class Tree {
def Grow (height:String):String = {
s"Tree grow $height"
}
}
scala> val dog = new Dog
dog: Dog = Dog@6e2577eb
scala> f(dog)("bone")
Dog eat bone
scala> val tree = new Tree
tree: Tree = Tree@42acae32
scala> f(tree)("10cm")
<console>:16: error: type mismatch;
found : tree.type (with underlying type Tree)
required: AnyRef{def eat(s: String): String}
f(tree)("10cm")
^
Structural Types
最新推荐文章于 2024-09-19 20:58:10 发布