1. 程式人生 > 其它 >Centos7 使用Minikube搭建Kubernetes叢集

Centos7 使用Minikube搭建Kubernetes叢集

scala學習

scala簡介

Scala程式語言抓住了很多開發者的眼球。如果你粗略瀏覽Scala的網站,你會覺得Scala是一種純粹的面向物件程式語言,而又無縫地結合了指令式程式設計和函數語言程式設計風格。Christopher Diggins認為:
不太久之前程式語言還可以毫無疑意地歸類成“命令式”或者“函式式”或者“面向物件”。Scala代表了一個新的語言品種,它抹平了這些人為劃分的界限。
根據David Rupp在部落格中的說法,Scala可能是下一代Java。這麼高的評價讓人不禁想看看它到底是什麼東西。
Scala有幾項關鍵特性表明了它的面向物件的本質。例如,Scala中的每個值都是一個物件,包括基本資料型別(即布林值、數字等)在內,連函式也是物件。另外,類可以被子類化,而且Scala還提供了基於mixin的組合(mixin-based composition)。
與只支援單繼承的語言相比,Scala具有更廣泛意義上的類重用。Scala允許定義新類的時候重用“一個類中新增的成員定義(即相較於其父類的差異之處)”。Scala稱之為mixin類組合。
Scala還包含了若干函式式語言的關鍵概念,包括高階函式(Higher-Order Function)、區域性套用(Currying)、

巢狀函式(Nested Function)、序列解讀(Sequence Comprehensions)等等。

scala語法以及和java的聯絡

class :類
object:物件,單例物件

scala基本語法:

def:定義函式的關鍵字
main:函式名
args: Array[String] :引數
args : 引數名 Array[String] : 引數型別 ,String : 泛型
Unit : 無返回,相當於void
注意:main函式必須放在object中
例如:

object Demo1Helloworld{
def main(args: Array[String]): Unit = {
 println("helloworld")
 } 
 }

語法基礎以及和java的一些比較

object Demo2Base{
del main(args: Array[String]):Unit = {
//scala具有型別推斷的屬性
//自動根據等號右邊推斷出變數的型別
var s = "1"
//手動增加型別
var s :string="1"
//var : 宣告變數,可以再指向其他的物件
//val : 宣告常量,不能再指向其他物件

//scala的型別轉換
val str: String = "100"
//java的方式
Integer.parseInt(str)
//scala的型別轉換是對java的方式進行了封裝,用to的方法隱式增加
val int: Int = str.toInt
val str1: String = int.toString

//注意:scala中不支援for(int i;i<size;i++)迴圈,需要用while或者迭代器
}
}

scala和java相互相容,語法不相容

可以在scala中使用java的類
例如:建立一個java類,包含屬性,方法等。可以通過在scala中new得到
new 類名(引數1,引數2)
而在java中也可以呼叫scala的方法
因為通過object宣告的scala,相當於加了個static靜態修飾符,可以通過類名進行呼叫
類名.方法名()

![scala on java(1)](C:\Users\A\Desktop\scala\scala on java(1).png)

java和scala檔案讀寫的語法比較

以下程式碼形式示例:

object Demo3IO{
der main(args: Array[String]): Unit = {
//1.使用java的形式寫scala程式碼
//注意:scala中的異常預設丟擲
//讀取的路徑為相對路徑,該路徑為當前執行模組路徑
val fileReader = new FileReader(fileName = "data/students.txt")

//緩衝流
val bufferedReader = new BufferedReader(fileReader)
//讀取第一行
var line : String = bufferedReader.readline()
while (line != null){
println(line)
line = bufferedReader.readline()
}
bufferedReader.close()

//使用scala
val source: BufferedSource = Source.fromFile("data/students.txt")
val lines: Iterator[String] = source.getLines()
    for (line <- lines) {
      println(line)
    }
//迭代器只能迭代一次

 //鏈式呼叫
    val iterator: Array[String] = Source.fromFile("data/students.txt").getLines().toArray
   
   //輸出流
    val bufferedWriter = new BufferedWriter(new FileWriter("data/out"))

    for (line <- iterator) {
      bufferedWriter.write(line)
      bufferedWriter.newLine()
      bufferedWriter.flush()
    }

    bufferedWriter.close()
}
}