1.trait
如果只有乙個trait就使用extends進行擴充套件,如果是多個,就使用with對生於trait進行擴充套件
trait logger1
trait logger2
class
dog with logger
//trait之間也存在擴充套件
trait logger2 extens logger1{}
//with trait 是需要對每個trait都使用trait
自身型別
this:型別=>
操作符1.中置操作符
a 識別符號 b //識別符號代表乙個有兩個引數的方法(乙個隱式的引數和乙個顯示的引數)
如:1 + 2<===> 1.+(2) //這樣的表示式叫做中置(infix)表示式,因為操作符位於兩個引數之間
2.單元操作符
scala> 1 tostring //單元操作符
scala> +: -: !:boolean取反 ~:按位取反 //
賦值操作符
$scala>+= / -= *= /=
結合性:
當有一些列的相同優先順序的操作符的時候,操作符的結合性決定了其實從左到右求值還是從右到左求值
scala中所有的操作符都是左結合的,除了:(1)以冒號:結尾的操作符;(2)賦值操作符;(3)nil:空集合
在nil結合中追加元素:1::nil //list[int]=list(1) 1::2::nil //list[int] = list(1,2)
運算順序:val list=2::nil 1::list //返回值:list[int] = list(1,2)
//:表示右結合,優先順序從右邊開始
scala>val l = nil //構造空集合
scala>1::2::nil //
array(100) = 200 進行更新操作
object dog{
class fraction(n:int,d:int){
object fraction{
Scala學習筆記8 for表示式
foreach為容器提供了內部迭代器 1 to 10 foreach i println i for表示式接收的引數包括乙個或多個生成器 generator 0或多個定義 definition 還有0或多個過濾器 filter 這些東西彼此以分號分隔。yield關鍵字是可選的,如果它存在的話,就表示...
Scala學習筆記
scala學習筆記 一.scala中集合的常用方法 首先定義兩個陣列集合,用於測試 scala val arr1 array 1,2,3,4 arr1 array int array 1,2,3,4 scala val arr2 array 3,4,5,6 arr2 array int array ...
Scala學習筆記
1 閉包 var a 3 var addfun x int x a var b addfun 10 println b addfun 就是個和物件無關的函式,區域性變數,使用方法和函式一樣,但是好像不推薦這種寫法。2 類的建立,簡單使用abstract class bparent 構造函式引數會自動...