變量
val : 不可變變量
var: 可變變量
lazy val: 使用時(shí)初始化變量
變量聲明
聲明類(lèi)
class Person(val name: String, var age: Int)
分號(hào)
= , { . 表示下一行還有代碼
代碼塊
方法和變量可以定義為單行,也可以嵌套。
注釋
/*
This is a multiline comment:
*/
// This is a single line comment
數(shù)據(jù)類(lèi)型
類(lèi)型層次結(jié)構(gòu)
scala 中所有的類(lèi)型都是對(duì)象。
Any,AnyVal和AnyRef類(lèi)型是Scala類(lèi)型層次結(jié)構(gòu)的根。
擴(kuò)展AnyVal的類(lèi)型稱為值類(lèi)型。
類(lèi)型
字符 “a”
布爾 false, !false
數(shù)字 Byte . Short . Int . Long . Float . Double. (可按順序自動(dòng)將數(shù)字從一種類(lèi)型轉(zhuǎn)換為另一種類(lèi)型)
常量 Long, Int, Short, Char, Byte
字符串插值
{book title}"
-
Option Map.get返回一個(gè)Optio[T]
- 如果為some,則Some.get取值
- 如果為None, 則None.get 拋出異常
-
Range
- min-value to max-value by step-value
- min-value until max-value
-
元組
- 創(chuàng)建:
- (item1,item2)
- item1 -> item2
- 訪問(wèn)元組的索引值
- ._index后綴
- 創(chuàng)建:
Unit 類(lèi)似void
語(yǔ)句
-
匹配 MATCH
match { case 0 => println("Zero") case 1 => println("One") case _ => println("more than one") } -
循環(huán)遍歷 <-
val books = List("Scala", "Groovy", "Java", "SQL", "CSS") for (book<-books) println(book)
類(lèi)
Case類(lèi):提供與普通類(lèi)相同的功能,但編譯器生成toString,hashCode和equals方法,您可以覆蓋。
方法聲明:def
-
值類(lèi):AnyVal
class SomeClass(val i: Int) extends AnyVal { def twice() = i*2 } -
對(duì)象
-
單例對(duì)象:只能有一個(gè)實(shí)例的類(lèi)
object Car { def drive { println("drive car") } } Car.drive
-
-
接口 Traits
- 子接口 extend
-
繼承
- 單繼承,子類(lèi)只可以有一個(gè)父類(lèi)
- 根:Any
- 覆蓋 override
-
構(gòu)造函數(shù)
參數(shù)聲明為val,只生成一個(gè)getter方法
參數(shù)聲明為val,生成訪問(wèn)器和mutator方法
可以將
private關(guān)鍵字添加到val或var字段,以防止getter和setter方法生成。-
輔助構(gòu)造函數(shù)以提供創(chuàng)建對(duì)象的不同方法。
輔助構(gòu)造函數(shù)通過(guò)創(chuàng)建名為this的方法來(lái)定義。
我們可以定義多個(gè)輔助構(gòu)造函數(shù),但它們必須有不同的簽名。
每個(gè)輔助構(gòu)造函數(shù)必須以對(duì)先前定義的構(gòu)造函數(shù)的調(diào)用開(kāi)始
class Book (var title :String, var ISBN: Int) { def this(title: String) { this(title, 2222) } def this() { this("CSS") this.ISBN = 1111 } override def toString = s"$title ISBN- $ISBN" } val book1 = new Book val book2 = new Book("Clojure") val book3 = new Book("Scala", 3333)
-
伴生對(duì)象
- 概念:對(duì)象與一個(gè)類(lèi)共享一個(gè)名稱時(shí),它被稱為伴生對(duì)象,并且該類(lèi)被稱為伴生類(lèi)。
伴生對(duì)象是與另一個(gè)類(lèi)或特征共享相同名稱和源文件的對(duì)象。
優(yōu)點(diǎn):允許在類(lèi)上創(chuàng)建靜態(tài)成員
注:與伴生類(lèi)不共享相同名稱的單例對(duì)象稱為獨(dú)立對(duì)象。
-
閉包
概念:一個(gè)函數(shù),它的返回值取決于在該函數(shù)之外聲明的一個(gè)或多個(gè)變量的值
-
函數(shù)鏈:Currying轉(zhuǎn)換具有多個(gè)參數(shù)的函數(shù),創(chuàng)建一個(gè)函數(shù)鏈,每個(gè)函數(shù)都需要一個(gè)參數(shù)
def add(x: Int)(y: Int) = x + y def add(x: Int) = (y: Int) => x + y
-
導(dǎo)入
-
使用下劃線
_作為通配符導(dǎo)入所有類(lèi)型import java.awt._ -
程序包名稱是代碼所有者的反向域名
-
源文件中的第一個(gè)非注釋行:
package com.java2s.stuf
-
-
-
集合
數(shù)組 Array
-
列表 List
-
空列表
val empty = Nil -
創(chuàng)建
val books: List[String] = List("Scala", "Groovy", "Java")val books = "Scala" :: ("Groovy" :: ("Java" :: Nil)) 列表上的操作可以用head和tail方法表示,其中head返回列表的第一個(gè)元素,tail返回一個(gè)由除第一個(gè)元素之外的所有元素組成的列表。
-