scala语法汇总
                            
                            
                            // def main(args: Array[String]) 
def main()
{
print("-------------------------------------下面是輸出語句的用法--------------------------------------\n")
var list = Array(1,2,3,4)var a = 10;var b = 20;var c = 25;var d = 25;println("a + b = " + (a + b) );println("a - b = " + (a - b) );println("a * b = " + (a * b) );println("b / a = " + (b / a) );println("b % a = " + (b % a) );println("c % a = " + (c % a) );var x = 10;if( x < 20 ){println("x < 20");}print("-----------------------------------while循環的用法-----------------------------------------------\n")var k = 10;// 無限循環while(k<100 ){k=k+10println( "k 的值為 : " + k );}print("------------------------------------for循環的用法-------------------------------------------\n")
for (aa <- list) {//這個意思是,讓aa遍歷list,其中<-是遍歷運算符printf(aa+"   ")}}print("----------------------------------函數與函數調用的用法-------------------------------------------\n")def addInt( a:Int, b:Int ) : Int = 
{var sum:Int = 0sum = a + b return sum
}println( "Returned Value : " + addInt(5,7) );print("----------------------------------三個冒號運算符與兩個冒號運算符-------------------------------------------\n")val one = List(1,2,3)
val two = List(4,5,6)
val three = one ::: two
println(three.toString())val four = 7 :: threeprintln(four.toString())print("-------------------------------閉包(其實就是python中的匿名函數)---------------------\n")
var factor = 3  
val multiplier = (i:Int) => i * factor 
println( "muliplier(1) value = " +  multiplier(1) )  
println( "muliplier(2) value = " +  multiplier(2) )  print("-------------------------------可以修改的字符串--------------------\n")val buf = new StringBuilder;buf += 'a'buf ++= "bcdef"buf++="ychi"println( "buf is : " + buf.toString );
print("-------------------------------字符串的長度--------------------\n")var palindrome = "www.runoob.com";var len = palindrome.length();println( "String Length is : " + len );
print("-------------------------------字符串的拼接-------------------\n")print("菜鳥教程官網: ".concat("www.runoob.com\n"))print("-------------------------------字符串數組的定義和輸出------------------\n")var z = Array("Runoob", "Baidu", "Google")
println( "String Length is : " + z(0)+z(1)+z(2) );print("----------------------------數組處理----------------\n")var myList = Array(1.9, 2.9, 3.4, 3.5)// 輸出所有數組元素for ( x <- myList ) {println( x )}// 計算數組所有元素的總和var total = 0.0;for ( i <- 0 to (myList.length - 1)) {total += myList(i);}println("總和為 " + total);// 查找數組中的最大元素var max = myList(0);for ( i <- 1 to (myList.length - 1) ) {if (myList(i) > max) max = myList(i);}println("最大值為 " + max);print("----------------------------多維數組處理--------------------------------------------------------\n")var myMatrix = Array.ofDim[Int](3,3)// 創建矩陣for (i <- 0 to 2) {for ( j <- 0 to 2) {myMatrix(i)(j) = j;}}// 打印二維陣列for (i <- 0 to 2) {for ( j <- 0 to 2) {print(" " + myMatrix(i)(j));}println();}print("-----------------------------下面是迭代器操作-------------------------------------------\n")val it = Iterator("Baidu", "Google", "Runoob", "Taobao")while (it.hasNext){println(it.next())}def main(args: Array[String]) {val ita = Iterator(20,40,2,50,69, 90)val itb = Iterator(20,40,2,50,69, 90)println("最大元素是:" + ita.max )println("最小元素是:" + itb.min )println("ita.size 的值: " + ita.size )println("itb.length 的值: " + itb.length )}print("-----------------------------下面是scala類和對象-------------------------------------------\n")
class Point(xc: Int, yc: Int) 
{var x: Int = xcvar y: Int = ycdef move(dx: Int, dy: Int) {x = x + dxy = y + dyprintln ("x 的坐標點: " + x);println ("y 的坐標點: " + y);}
}val pt = new Point(10, 20);// 移到一個新的位置pt.move(10, 10);print("-----------------------------下面是scala類的繼承----------------------------------------\n")
class Location(val xc: Int, val yc: Int,val zc :Int) extends Point(xc, yc){var z: Int = zcdef move(dx: Int, dy: Int, dz: Int) {x = x + dxy = y + dyz = z + dzprintln ("x 的坐標點 : " + x);println ("y 的坐標點 : " + y);println ("z 的坐標點 : " + z);}
}val lc = new Location(10, 20,30);
lc.move(123,12)println("-----------------------------下面是scala類的Trait用法(相當于抽象類)------------------------------------\n")
trait Equal {def isEqual(x: Any): Boolean//這里只是進行聲明,不進行具體的實現def isNotEqual(x: Any): Boolean = !isEqual(x)
}class Points(xc: Int, yc: Int) extends Equal {var x: Int = xcvar y: Int = ycdef isEqual(obj: Any) =obj.isInstanceOf[Points] && obj.asInstanceOf[Points].x == x//這個函數的意思是:先檢查比較的是不是屬于同一種對象,如果屬于,那么再比較兩個對象的成員// p.isInstanceOf[XX] 判斷 p 是否為 XX  對象的實例;// p.asInstanceOf[XX] 把 p   轉換成 XX 對象的實例print("----------------------------------------")}
val p1 = new Points(2, 3)
println("p1.x=",p1.x)
val p2 = new Points(2, 4)
println("p2.x=",p2.x)
val p3 = new Points(3, 3)
println("p3.x=",p3.x)
println(p1.isEqual(p2))//因為這里p1.x=p2.x,所以這里返回為true
println(p1.isEqual(p3))//這里因為第一個元素不相等,p1.x≠p3.x,所以這里返回false
println(p1.isEqual(2)) //因為這里2不是對象實例,所以直接返回falseprint("-----------------------------下面是scala類的模式匹配--------------------------------------\n")def matchTest(x: Int): String = x match {case 1 => "one"case 2 => "two"case _ => "many"//_在這里的意思相當于default,也就是其他情況下的意思}println(matchTest(66666))print("-----------------------------下面是scala類的正則匹配用法-------------------------------------\n")
import scala.util.matching.Regex
val pattern = new Regex("(S|s)cala")  // 首字母可以是大寫 S 或小寫 s
val str = "Scala is scalable and cool"println((pattern findAllIn str).mkString(","))   // 使用逗號 , 連接返回結果print("-----------------------------下面是scala類的異常處理辦法-------------------------------------\n")import java.io.FileReader
import java.io.FileNotFoundException
import java.io.IOExceptiontry {val f = new FileReader("input.txt")} catch {case ex: FileNotFoundException =>{println("Missing file exception")}case ex: IOException => {println("IO Exception")}}print("-----------------------------下面是scala類的提取器(其實就是把關鍵詞塞進去,或者從一個字符串里面把關鍵詞摳出來)------------------------------------\n")// 注入方法 (可選)def apply(user: String, domain: String) = {//這個就是個拼接函數user +"@"+ domain}// 提取方法(必選)def unapply(str: String): Option[(String, String)] = {//這個就是以@為分隔符提取進行句子分詞之類的作用val parts = str split "@"if (parts.length == 2){Some(parts(0), parts(1)) }else{None}}println ("Apply 方法 : " + apply("Zara", "gmail.com"));
println ("Unapply 方法 : " + unapply("Zara@gmail.com"));
println ("Unapply 方法 : " + unapply("Zara Ali"));print("-----------------------------從本地讀取txt文本-----------------------------------\n")
import scala.io.Sourceprintln("文件內容為:" )Source.fromFile("test.txt" ).foreach{ print}
println("\n" )print("-----------------------------下面是運行main函數-------------------------------------------\n")
main()//注意研究下set是怎么回事 
                        
                        
                        ?
總結
 
                            
                        - 上一篇: ubuntu16.04下面用sublim
- 下一篇: scala能进入交互模式但是无法执行本地
