1.符号

作者: 丹之 | 来源:发表于2018-12-20 20:36 被阅读0次

1. 上下界约束符号 <: 与 >:

def using[A <: Closeable, B](closeable: A) (getB: A => B): B =
  try { 
    getB(closeable)
  } finally {
    closeable.close() 
  }

例子中A <: Closeable(java.io.Cloaseable)的意思就是保证类型参数A是Closeable的子类(含本类),语法“A <: B"定义了B为A的上界;同理相反的A>:B的意思就是A是B的超类(含本类),定义了B为A的下界。

2.协变与逆变符号+T, -T

“协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型。e.g. String => AnyRef

“逆变”则是指能够使用派生程度更小的类型。e.g. AnyRef => String

【+T】表示协变,【-T】表示逆变

3. view bounds(视界) 与 <%

<%的意思是“view bounds”(视界),它比<:适用的范围更广,除了所有的子类型,还允许隐式转换过去的类型

def method [A <% B](arglist): R = ...

等价于:

def method [A](arglist)(implicit viewAB: A => B): R = ...

或等价于:

implicit def conver(a:A): B = …
 
def method [A](arglist): R = ...

4.Scala's @ operator

It enables one to bind a matched pattern to a variable. Consider the following, for instance:

val o: Option[Int] = Some(2)

You can easily extract the content:

o match {
  case Some(x) => println(x)
  case None =>
}

But what if you wanted not the content of Some, but the option itself? That would be accomplished with this:

o match {
  case x @ Some(_) => println(x)
  case None =>
}

相关文章

  • 1.符号

    1. 上下界约束符号 <: 与 >: 例子中A <: Closeable(java.io.Cloaseable)的...

  • 句子训练

    一、修改病句 (一)复习学过的修改符号。 删除符号、添加符号、替换符号、调换符号。 (二)修改病句 1.修改方法:...

  • 句子训练 - 草稿

    一、复习学过的修改符号。 删除符号、添加符号、替换符号、调换符号。 二、修改病句 1.修改方法:读大题――找病处―...

  • 深入理解ES6--6.符号与符号属性

    主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号 1. Symbol基础 1...

  • 第7篇 新媒体文案的传播B

    符号化:让广告更容易被传播1.符号指一切具有携带意义的视觉形象、听觉符号、触觉符号、味觉符号和嗅觉符号。2.符号有...

  • Word使用技巧——Word中各种符号的输入

    1. 键盘输入 2. 插入符号 符号集Windings 2Word下有各种符号集,每个符号集下有各种各样的符号,可...

  • Axure工具使用

    1.项目符号

  • HTML 实体符号

    1.常用符号

  • ES6(六)符号与符号属性2

    1.符号值的转换 2.检索符号属性 3.使用知名符号暴露内部方法 (跳过) 符号值的转换 符号类型在进行转换时非常...

  • 2019-07-23

    day18 操作系统正则符号/grep 1.系统通配符号2.系统正则符号 知识回顾: 1.系统文件属性(文件类型 ...

网友评论

      本文标题:1.符号

      本文链接:https://www.haomeiwen.com/subject/zppukqtx.html