美文网首页
《快学 Scala》 学习笔记 - Chapter 1

《快学 Scala》 学习笔记 - Chapter 1

作者: Zeal_8421 | 来源:发表于2017-01-07 20:04 被阅读70次

Scala解释器

  • 工作原理实际上是将输入快速编译成字节码,然后提交给JVM运行并输出结果,因此称为REPL

    • REPL

      • Read

      • Evaluation

      • Print

      • Loop

  • :paste

    • 进入粘贴模式
  • 在解释器中运算返回的值为常量

    • 例如 scala> 3*5
      res3: Int = 15

    • 此处 res3 不可再负值,是一个常量

声明值和变量

  • 常量

    • val
  • 变量

    • var
  • 值的声明的类型是放到名称后面的,和go语言类似, 另外声明后如果有负值,声明时为说明类型,则编译器也会自动推断

    • var xmax, ymax = 100

    • var greeting, message: String = null

常用类型

  • 类型

    • Byte

    • Char

    • Short

    • Int

    • Long

    • Float

    • Double

  • 类型上可以执行方法

    • 例子

      • 1.toString()

      • 1.to(10)

    • 备注

      • 有点像C#的扩展函数

算术和操作符重载

  • Scala几乎可以对任何符号为方法命名

  • 运算符在scala也是方法

    • a + b 可以认为是a.+(b)
  • 方法可以隐式调用

    • 1.to(10) 可以写成 1 to 10
  • 存在 counter+=1 但不存在 counter++

调用函数的方法

  • import

    • import scala.math._

      • _是java中的*
    • import math._ 等同于 import scala.math._, 前面的scala可以省略

  • 单例对象(singleton object)

  • 伴生对象(companion object)

    • 类似java中的静态方法

    • BigInt.probablePrime(100, scal.util.Random)

  • 使用习惯

    • 不带参数的Scala方法通常不使用圆括号(执行后不改变当前对象)

      • “Hello”.distinct

apply方法

  • 可以认为是用类似函数的方法对()进行重载

    • 伴生对象上可以用

    • 实例对象上也可以用

  • 例子

    • 例1

      • java访问数组

        • s.charAt(4)
      • scala访问数组

        • def apply(n: Int): Char

        • “Hello”(4)

    • 例2

      • BigInt(“1234567890”) 等同于 BigInt.apply(“1234567890”)

        • 本语句会产生出新的BigInt实例

Scaladoc

  • Mac下建议使用DASH进行浏览

  • Scala也是支持闭包的,函数可以作为参数传入

    • s.count(p: (Char) => Boolean): Int

      • s.count(_.isUpper)

      • 这是一种非常紧凑的定义,见12章

练习

  • 第三题. res变量是val还是var

    • 是val
  • 第四题. 查找 StringOps 关键字

    • “crazy”*3 记过是将crazy 重复3遍
  • 第十题.takeXXXX和substring的区别是take不存在越界问题,只是尽量按照输入的数量来获取值,而substring 则如果越界则会抛异常

《快学 Scala》 学习笔记 第一章.png

相关文章

网友评论

      本文标题:《快学 Scala》 学习笔记 - Chapter 1

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