在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Scala/ 操作基本數(shù)據(jù)類型
包對(duì)象
Ordered Trait
組合和繼承–定義 final 成員
基本數(shù)據(jù)類型
Match 表達(dá)式
類和對(duì)象 (三)
操作基本數(shù)據(jù)類型
for 表達(dá)式
組合和繼承–重載成員函數(shù)和方法
類和對(duì)象 (二)
組合和繼承–定義 factory 對(duì)象
組合和繼承–多態(tài)和動(dòng)態(tài)綁定
Trait 的基本概念
if 表達(dá)式
組合和繼承–抽象類
函數(shù)–函數(shù)字面量的一些簡(jiǎn)化寫法
while 循環(huán)
組合和繼承–使用組合還是繼承?
訪問(wèn)控制修飾符
Trait 示例–Rectangular 對(duì)象
組合和繼承–定義參數(shù)化成員變量
組合和繼承–定義無(wú)參數(shù)方法
類和對(duì)象 (一)
函數(shù)–閉包
函數(shù)–類成員函數(shù)
Scala 基本數(shù)據(jù)類型的實(shí)現(xiàn)方法
try 表達(dá)式處理異常
選擇瘦接口還是胖接口設(shè)計(jì)?
組合和繼承–小結(jié)
創(chuàng)建新的控制結(jié)構(gòu)
使用 import
為訪問(wèn)控制修飾符添加作用域
Scala 的類層次關(guān)系
類和對(duì)象 (五)
傳名參數(shù)
柯里化函數(shù)
函數(shù)–頭等公民
組合和組合和繼承–定義 heighten 和 widen 函數(shù)
使用 Package–將代碼放入包中
隱含的 import
所有類的公共子類–底層類型
進(jìn)一步 Scala
函數(shù)–局部函數(shù)
引用包中的代碼
組合和繼承–使用 override 修飾符
組合和繼承–實(shí)現(xiàn)類 Element 的 above,beside 和 toString()方法
類和對(duì)象 (四)
函數(shù)–尾遞歸
沒(méi)有“break”和“continue”的日子
組合和繼承–調(diào)用基類構(gòu)造函數(shù)
減低代碼重復(fù)
函數(shù)–函數(shù)–可變參數(shù),命名參數(shù),缺省參數(shù)
起步 Scala
組合和繼承–擴(kuò)展類
函數(shù)–部分應(yīng)用的函數(shù)
開(kāi)始神奇的 Scala編程之旅
組合和繼承–概述
Trait 用來(lái)實(shí)現(xiàn)可疊加的修改操作

操作基本數(shù)據(jù)類型

Scala 提供了豐富的運(yùn)算符用來(lái)操作前面介紹的基本數(shù)據(jù)類型。前面說(shuō)過(guò),這些運(yùn)算符(操作符)實(shí)際為普通類方法的簡(jiǎn)化(或者稱為美化)表示。比如 1+2 ,實(shí)際為 (1).+(2) ,也就是調(diào)用 Int 類型的+方法。例如:

scala> val sumMore = (1).+(2)
sumMore: Int = 3

實(shí)際上類 Int 定義了多個(gè)+方法的重載方法(以支持不同的數(shù)據(jù)類型)比如和 Long 類型相加。 +符號(hào)為一運(yùn)算符,為一中綴運(yùn)算符。 在 Scala 中你可以定義任何方法為一操作符。 比如 String 的 IndexOf 方法也可以使用操作符的語(yǔ)法來(lái)書寫。 例如:

scala> val s ="Hello, World"
s: String = Hello, World
scala> s indexOf 'o'
res0: Int = 4

由此可以看出運(yùn)算符在 Scala 中并不是什么特殊的語(yǔ)法,任何 Scala 方法都可以作為操作符來(lái)使用。是否是操作符取決于你如何使用這個(gè)方法,當(dāng)你使用 s.indexOf(‘o’) indexOf 不是一個(gè)運(yùn)算符。 而你寫成 s indexOf ‘o’ ,indexOf 就是一個(gè)操作符,因?yàn)槟闶褂昧瞬僮鞣恼Z(yǔ)法。

除了類似+的中綴運(yùn)算符(操作符在兩個(gè)操作符之間),還可以有前綴運(yùn)算符和后綴運(yùn)算符。顧名思義前綴運(yùn)算符的操作符在操作數(shù)前面,比如 -7 的“-”。后綴運(yùn)算符的運(yùn)算符在操作數(shù)的后面,比如 7 toLong 中的 toLong。 前綴和后綴操作符都使用一個(gè)操作數(shù),而中綴運(yùn)算符使用前后兩個(gè)操作數(shù)。Scala 在實(shí)現(xiàn)前綴和后綴操作符的方法,其方法名都以 unary_-開(kāi)頭。比如:表達(dá)式 -2.0 實(shí)際上調(diào)用 (2.0).unary_-方法。

scala> -2.0
res1: Double = -2.0
scala> (2.0).unary_-
res2: Double = -2.0

如果你需要定義前綴方法,你只能使用+,-,! 和~四個(gè)符號(hào)作為前綴操作符。

后綴操作符在不使用.和括號(hào)調(diào)用時(shí)不帶任何參數(shù)。在 Scala 中你可以省略掉沒(méi)有參數(shù)的方法調(diào)用的空括號(hào)。按照慣例,如果你調(diào)用方法是為了利用方法的“副作用”,此時(shí)寫上空括號(hào),如果方法沒(méi)有任何副作用(沒(méi)有修改其它程序狀態(tài)),你可以省略掉括號(hào)。比如:

scala> val s ="Hello, World"
s: String = Hello, World
scala> s toLowerCase
res0: String = hello, world

具體 Scala 的基本數(shù)據(jù)類型支持的操作符,可以參考 Scala API 文檔。下面以示例介紹一些常用的操作符:

算術(shù)運(yùn)算符 + – × /

scala> 1.2 + 2.3
res0: Double = 3.5
scala> 'b' -'a'
res1: Int = 1
scala> 11 % 4
res2: Int = 3
scala> 11.0f / 4.0f
res3: Float = 2.75
scala> 2L * 3L
res4: Long = 6

關(guān)系和邏輯運(yùn)算符包括 >,<,>=,!等

scala> 1 >2
res5: Boolean = false
scala> 1.0 <= 1.0
res6: Boolean = true
scala> val thisIsBoring = !true
thisIsBoring: Boolean = false
scala> !thisIsBoring
res7: Boolean = true
scala> val toBe=true
toBe: Boolean = true
scala> val question = toBe || ! toBe
question: Boolean = true

要注意的是邏輯運(yùn)算支持“短路運(yùn)算”,比如 op1 || op2 ,當(dāng) op1=true ,op2 無(wú)需再計(jì)算,就可以知道結(jié)果為 true。這時(shí) op2 表示式不會(huì)執(zhí)行。例如:

scala> def salt()= { println("salt");false}
salt: ()Boolean
scala> def pepper() ={println("pepper");true}
pepper: ()Boolean
scala> pepper() && salt()
pepper
salt
res0: Boolean = false
scala> salt() && pepper()
salt
res1: Boolean = false

位操作符

scala> 1 & 2
res2: Int = 0
scala> 1 | 2
res3: Int = 3
scala> 1 ^ 2
res4: Int = 3
scala> ~1
res5: Int = -2

對(duì)象恒等比較

如果需要比較兩個(gè)對(duì)象是否相等,可以使用==和!=操作符

scala> 1 == 2
res6: Boolean = false
scala> 1 !=2
res7: Boolean = true
scala> List(1,2,3) == List (1,2,3)
res8: Boolean = true
scala> ("he"+"llo") == "hello"
res9: Boolean = true

Scala 的==和 Java 不同,scala 的==只用于比較兩個(gè)對(duì)象的值是否相同。而對(duì)于引用類型的比較使用另外的操作符 eq 和 ne。

操作符的優(yōu)先級(jí)和左右結(jié)合性

Scala 的操作符的優(yōu)先級(jí)和 Java 基本相同,如果有困惑時(shí),可以使用()改變操作符的優(yōu)先級(jí)。 操作符一般為左結(jié)合,Scala 規(guī)定了操作符的結(jié)合性由操作符的最后一個(gè)字符定義。對(duì)于以“:”結(jié)尾的操作符都是右結(jié)合,其它的操作符多是左結(jié)合。例如:

ab 為 a.(b) 而 a:::b 為 b.:::(a),而 a:::b:::c = a::: (b ::: c) , abc= (ab)c