美文网首页
scala学习笔记-类和类型

scala学习笔记-类和类型

作者: cclucc | 来源:发表于2019-11-15 19:47 被阅读0次

简单的说,类(class)与类型(type)是两个不一样的概念(在java里因为早期一直使用class表达type,并且现在也延续这样的习惯);类型(type)比类(class)更”具体”,任何数据都有类型。类是面向对象系统里对同一类数据的抽象,在没有泛型之前,类型系统不存在高阶概念,直接与类一一映射,而泛型出现之后,就不在一一映射了。比如定义class List[T] {}, 可以有List[Int] 和 List[String]等具体类型,它们的类是同一个List,但类型则根据不同的构造参数类型而不同。

scala中的lambda表达式
def hf(f:String=>Unit) = f("higher")

hf(s=>println(s))//省略了s的类型,因为hf中已经声明了类型为string=>Unit,编译器会把出参和入参按照声明的类型来对待
hf(println(_)) //采用了占位符形式,对于所有的 x=>g(x) 都可以用占位符的形式写为:g(_)。省略了入参和箭头
hf(println)//省略了参数。。。编译器支持lambda的“eta转换”(可以参考之前的文章scala中的eta-conversion)。简单的说就是对于lambda表达式中只有一个参数,并且箭头右边的逻辑是对入参执行一个函数:即 x => f(x),则可以简写为f

scala的小括号和花括号
List(2).map( case 2 => "OK" )//编译失败
List(2).map{ case 2 => "OK" }//编译成功

why????!!!
首先明白,花括号在scala中的用法
1)、scala里面大小括号并不是一回事儿,虽然说很多时候可以替换。大括号之所以在小括号的地方能使用,是因为该小括号仅需一个参数,故小括号可以省略,而大括号的内容最后会被evaluate成一个结果,并作为小括号的参数给予传递。两个参数的小括号就无法直接用大括号替代。
2)、对于只有一个参数的方法,其小括号是可以省略的,map(lambda)可写为 map lambda,即这块{case 2 => "OK"} 连同花括号整体是一个lambda(函数字面量)。

相关文章

  • scala学习笔记-类和类型

    简单的说,类(class)与类型(type)是两个不一样的概念(在java里因为早期一直使用class表达type...

  • Scala相关文章索引(2)

    基本常识 scala编程第17章学习笔记(1)——集合类型 scala Map类型笔记 scala代码风格指南--...

  • Scala基础

    学习笔记摘抄于Twitter scala文档:Twitter.github.ionext:Scala类&对象(一)...

  • [译]Scala统一的类型

    在Scala中,所有值都有类型,包括数值和函数。下图说明了类的层次结构。 Scala类型的层次结构 Any是所有类...

  • scala学习笔记

    scala学习笔记 第2章 变量和数据类型 基本数据 scala的核心数据为四种 :字面量、值、变量、类型 值使...

  • scala 入门学习

    Scala学习笔记: 1.1 scala的基础语法 声明与定义(赋值):声明变量时可以指定类型,不指定也可以自动识...

  • Scala类&对象(二)

    学习笔记摘抄于Twitter scala文档:Twitter.github.io为了方便,本文中类的定义代码和调用...

  • Scala类&对象(一)

    学习笔记摘抄于Twitter scala文档:Twitter.github.io为了方便,本文中类的定义代码和调用...

  • Scala 基本数据类型和操作

    数据类型 Scala 的数据类型和Java是类似的,所有Java的基本类型在scala包中都有对应的类,将Scal...

  • 《Scala 程序设计》学习笔记 说明

    本笔记是我在学习完 Scala 语法后,重学 Scala 时记录的。笔记中的内容侧重 Scala 和 函数式语言的...

网友评论

      本文标题:scala学习笔记-类和类型

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