Skip to content

Latest commit

 

History

History
64 lines (33 loc) · 2.38 KB

chapter1.md

File metadata and controls

64 lines (33 loc) · 2.38 KB

第1章 基础

1.1 REPL

全称Read-Eval-Print-Loop,是一种交互式解释器环境,Node.js、Python、Scala等语言的安装包中都附带此种工具。


1.2 声明值和变量

在Scala中,val关键字用来声明常量,var关键字用来声明变量。

  • 可以同时声明多个变量:val x, y
  • 可以不指定变量的类型,在初始化的时候会进行推断:val x, y = 100
  • 也可以手动指定变量类型:var greeting, message: String = ""

1.3 常用类型

Scala有八种基本类型:ByteCharShortIntLongFloatDoubleBoolean

与Java不同的是,这些类型是真正意义上的类。

Scala不刻意区分基本类型和引用类,可以直接对数字执行方法,比如1.toString()

Scala的编译器会自动转换基本类型与包装类。


1.4 算术和操作符重载

Scala在进行+-*/%等操作符的时候,实际上在调用一个方法,例如a+b实际上是a.+(b)。

事实上,Scala的方法几乎可以是任何符号,并且可以缩写成a 方法 b的形式。


1.5 调用函数和方法
  • import math._Scala中的下划线等同于Java的*,在导入的时候做通配符用。

  • 在使用以scala开头的包时,可以忽略scala前缀,无论是import时还是在使用时。

  • 不带参数的Scala方法通常不使用圆括号,更一般的说,没有参数且不改变当前对象的方法不带圆括号。

方法函数:这两者的区别表现在面向对象的编程中,方法与对象相关,方法中的数据是隐式传递的,可以操作类内部的数据,比如person.eat()就是一个方法;而函数与对象无关,类似于minmax这种通用的函数。通俗点说,在Java中,它们就是普通方法与静态方法的区别。


1.6 apply方法

在Scala中,"Hello"(4)将产出o,但实际上是调用了StringOpsapply方法,即等同于"Hello".apply(4)。

同样的,BigInt("123456789")可以不使用new关键字就创建一个BigInt对象,像这样使用伴生对象的apply方法来构建对象是Scala的常用手法。


1.7 Scaladoc

可以前往http://www.scala-lang.org/api/current/浏览Scala的在线API文档。

Scala的在线文档中有许多使用实例而不仅仅是简单的类介绍,这对初学者非常有用。