zoukankan      html  css  js  c++  java
  • scala之旅-核心语言特性【自身类型】(二十六)

    自身类型是一种用于声明一个特性必须混合进另一个特性的方式,即使不是直接去扩展。这使得成员之间的依赖不需要import也可以实现。

    一个自身类型可以缩小this关键字的类型,并且也是this的另一种别名标记符。这个语法看起来跟函数的语法很像但所包含的含义完全不同。

    如果想要在特性中使用自身类型,需要编写一个标志符,用于将另一个类型的特性混合进,标志符用一个 =>

    trait User {
      def username: String
    }
    
    trait Tweeter {
      this: User =>  // reassign this
      def tweet(tweetText: String) = println(s"$username: $tweetText")
    }
    
    class VerifiedTweeter(val username_ : String) extends Tweeter with User {  // We mixin User because Tweeter required it
      def username = s"real $username_"
    }
    
    val realBeyoncé = new VerifiedTweeter("Beyoncé")
    realBeyoncé.tweet("Just spilled my glass of lemonade")  // prints "real Beyoncé: Just spilled my glass of lemonade"

    因为我们this: User =>在中说过trait Tweeter,所以变量现在usernametweet方法的范围内这也意味着,由于VerifiedTweeterextend Tweeter,它也必须混入User(使用with User)。

  • 相关阅读:
    含有打印、统计DataGridView(1)
    数字金额转换大写人民币
    文件加密解密全解
    正则表达式之全部符号对照表
    C#程序集引入无效的解决方法
    TreeView 的简单实用
    Win7下用IIS发布网站
    C#做完一个网站怎么发布?
    c# 如何获取项目的根目录
    判断控件是否出现了滚动条
  • 原文地址:https://www.cnblogs.com/zhouwenyang/p/14034435.html
Copyright © 2011-2022 走看看