scala中的数据结构
维基百科定义的结构化类型
“结构类型系统(或基于属性的类型系统)是类型系统的主要类别,其中类型的兼容性和对等性由类型的结构而不是由其他特征(例如其名称或声明的位置)确定”
Scala中的结构类型允许某些特定情况下的代码模块化,例如,如果某个行为是在多个类中实现的,并且这些行为需要由类型的结构来调用。 此方法仅出于调用单个重写方法的目的就排除了对抽象类或特征的需要。 结构化类型不仅增加了语法糖,而且使代码更具模块化。
让我们考虑在猫和狗类中的“走动”行为。 StrucType类的whoIsWalking采用类型参数,该类型参数指出“接受具有方法walk并返回字符串的任何对象”类型的别名为变量'c',并且在该方法中别名变量可以调用'walk'。
class StrucType {
def whoIsWalking(c:{def walk():String}) = println(c.walk)
}
以下是具有commons.class方法的类
class Cat {
def walk():String = 'Cat walking'
}
class Dog {
def walk():String = 'Dog walking'
}
/**
*
* object Main {
def main(args:Array[String]) {
println('Hello Scala')
val walkerStruct = new StrucType();
walkerStruct.whoIsWalking(new Cat());
walkerStruct.whoIsWalking(new Dog());
}
}
*/
也可以考虑使用结构化类型来重构您的下一个策略模式实施。 Iam计划在我的下一篇文章中对它们进行解释,敬请期待!
参考:我们的JCG合作伙伴 Prasanna Kumar在Scala博客上的Prassee中在Scala中进行了结构(或)类型安全鸭子输入 。
翻译自: https://www.javacodegeeks.com/2013/01/structural-or-type-safe-duck-typing-in-scala.html
scala中的数据结构