《快学Scala》笔记(第一章 基础)
2015-12-17
- 假设它和Java一样
- REPL中
tab
键可以自动补全
- 方法后面不需要跟着括号
"a".toUpperCase
- 变量用
var
,常量用 val
:var counter = 1
val ansewer = 42
- 类型声明放在后面
val greeting : String = "hello"
- 同时声明和初始化多个值或变量
val x, y = 10
- 没有primative value,都是类
1.toString
- range可以这么做
1.to(10)
StringOps
类自动包装 java.lang.String
类,所以可以用很多方法,比如 "Hello".intersect("World")
- 同上,所以也有
RichInt
RichDouble
RichChar
包装对应类型,请多读文档
- BigInt BigDecimal 对应任意大小和精度的数字。背后的类是 java.math.BigInteger 和 java.math.BigDecimal 但是有运算符重载!(操,这个牛逼了)
- 不要使用强制类型转换,使用方法 99.4.toInt 99.toChar (编译器作者,摸摸头)
- 运算符重载和C++是一样的!
- a+b实际上是 a.+(b) (方法)而 1 to 10 实际上是 1.to(10) 对单参函数的语法糖,让我想到small talk
- 没有++和–操作符
- 引入
import scala.math._
(_
是通配符,类似*
)后,可以使用各种数学函数 sqrt pow min 等
- Scala没有静态方法,但有单例对象 singleton object 每个类都对应一个伴生对象 companion object,比如 BigInt 类的伴生类。 BigInt.probablePrime(100, scala.util.Random)
"hello"(4)
等于Java的 "hello"[4]
, (
是 括号方法的重载,一般对应 apply方法。BigInt(“121212121212”) 生成大整数,Array(1,4,9,33) 生成Int数组
- Scaladoc 在 www.scala-lang.org/api
答案
- 很多
- 一点
- 不知道
- StringOps
- RichInt
- BigInt(2) pow 1024
- import BigInt.probablePrime; import scala.util.Random
- BigInt.probablePrime(100, Random).toString(32)
- a(0) a(a.length)
- 不知道