天天看點

scala 程式設計思想--第一部分

  • scala 編譯器

有eclipse ,idea ,sumblime等

  • scala shell

1、變換目錄 cd 

2、目錄清單 ls

3、建立目錄 mkdir 

4、移除目錄 rm 

5、移除目錄 rm -r

6、重複前一行指令的最後一個參數: liunx !$  在 powershell $$

7、指令行: history 

8、unzip 

  • 安裝 scala 

需要先安裝java 

再安裝scala

跟java一樣,檢查scala -version 

示例代碼:

https://github.com/chrisdbarran/AtomicScala 

  • 運作scala

crtl+R 輸入scala 

scala> 42*11.3
res0: Double = 474.6
           

退出

scala>  :quit
           
  • 注釋

注釋有兩種形式:

以//開頭的注釋

多行注釋

  • 編寫腳本

腳本是可以在指令行運作的由scala代碼構成的檔案,

腳本是可以在指令執行該腳本

F:\scala\AtomicScala-master\AtomicScala-master\test>scala TestScala.scala
Hello world
           

值儲存的是特定類型的資訊。

val name=initalization
           

val關鍵字後面跟着你起的名字,等号和初始值。名字以字母或下劃線開頭。後面跟着更多的字母,數字或下劃線,美元符号在scala内部用途,

val 關鍵字後面跟着名字、等号和初始值。名字以字母和下載下傳開頭,
           
  • 方法

方法是打包在某個名字下的小程式,在使用方法時,就會執行這個小程式,方法将一組活動組合起來并賦予一個名字,這個組織程式的最基本的方式。

通常需要将資訊傳遞給方法。而方法将使用這些資訊來計算結果,最終會傳回結果

def methodName(arg1:Type1,args:Type2,……):returnType={
    lines of code
    result
}
           

方法定定義以關鍵字def 開始,後面跟着方法名和括号中的參數清單。參數是傳遞給方法的資訊,每個參數都有一個名字,後面跟着冒号和參數類型。

參數清單是右括号的後面跟着一個冒号和調用方法時方法所産生的結果類型。

def multiplyByTwo(x:Int):Int={
     println("Inside multiplyByTwo")
     x*2
     }

val r = multiplyByTwo(5)
println(r)

def addMultiply(x:Int,y:Double,s:String):Double={
    println(s)
    (x+y)*2.1
}

def r2:Double =addMultiply(7,9,"inside addMulltIply")
println(r2)

def test(x:Int,y:Double,s:String,expected:Double):Unit={
    val result = addMultiply(x,y,s)
    assert=(result== expected,"Expected"+expected+" Got "+result)
    println("result: "+result)
}

test(7,9,"Inside addMultiply",33.6)



object test{
  def main(args: Array[String]): Unit = {
    //建立方法getSquare,它接受一個Int參數,并傳回基平台,列印答案并使用下面的代碼進行測試
    def getSquare(x:Int):Int={
      x * x
    }
    val a = getSquare(3)
    //assert(a==90,"所得到值是:"+a)
    //建立方法getSequreDouble,它接收一個double參數并傳回其平方,打答案
    def getSequreDouble(x:Double):Double={
      x*x
    }
    //assert(1.44==getSequreDouble(1.2),"Your message here")
    //assert(1.44==getSequreDouble(5.7),"Your message here")
    //建立方法isArg1GreaterThanargs,它接受兩個double參數。
    //如果第一個參數比第二個大,那麼傳回true,否則傳回false,列印安
    def isArg1GreaterThanArg2(arg1:Double,args2:Double): Boolean ={
      if(arg1>args2){
        true
      }else{
        false
      }
    }
    //建立方法getMe,它接受一個String并傳回同一個的String,但是都轉為小寫字母
    //有一個現string方法,名為toLowerCase,列印答案,它需要滿足下面的測試
    def getMe(str1:String):String={
      str1.toLowerCase()
    }
    //assert("abcdefg"==getMe("abcdefg"),"Your message here")
    //assert("abcdEfg"==getMe("abcdefg"),"Your message here")
    //建立方法addStrings,它接受兩個string參數,并傳回連綴在一起的string使用。列印答案
    //它需要滿足下面的測試
    def addString(a:String,b:String):String={
      a+b
    }
    val s1 = addString("abc","def")
    assert(s1=="abcdef","abcdef")
    //assert("adbcde"==addString("abc","abdfdas2"),"not equals")
    //建立方法manyTimesString,它授受一個string和一個int參數,并傳回第一個參數重複第二個參數次數後得
    //String,列印答案,它需要滿足下面的測試
    def manyTimesString(test:String,x:Int):String={
      var returnStr=""
      var x1 =0
      for(x1 <- 1 until  x){
        returnStr=returnStr+test
      }
      returnStr
    }
    print(manyTimesString("abc",3))
    println(manyTimesString("ab1111c",3))
    def bmi(wight:Double,hight:Double):Double={
      wight/(hight*hight)
    }
    println(bmi(98.5,1.71))
  }
  //在計算順序的練習中,你用使用磅和身高計算體重指數
  //體重/身高的平方(國際機關kg/㎡)

}


           
  • 建立類

除了使用Range這樣的預定義的類型,我們還可以定義自已的對象類型