scala中的数据结构_Scala中的结构(或)类型安全鸭子输入

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中的数据结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值