欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 后端 Scala基礎(chǔ)

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 后端 Scala基礎(chǔ)

http://yzkb.51969.com/

Scala基礎(chǔ)

文章目錄

Scala基礎(chǔ)前言Scala是一種將面向?qū)ο蠛秃瘮?shù)式編程結(jié)合在一起的高級(jí)語(yǔ)言,旨在以簡(jiǎn)潔、優(yōu)雅和類型安全的方式表達(dá)通用編程模式。Scala功能強(qiáng)大,不僅可以編寫簡(jiǎn)單腳本,還可以構(gòu)建大型系統(tǒng)。Scala運(yùn)行于Java平臺(tái),Scala程序會(huì)通過JVM被編譯成class字節(jié)碼文件,然后在操作系統(tǒng)上運(yùn)行。其運(yùn)行時(shí)候的性能通常與Java程序不分上下,并且Scala代碼可以調(diào)用Java方法、繼承Java類、實(shí)現(xiàn)Java接口等,幾乎所有Scala代碼都大量使用了Java類庫(kù)。

一、CentOs安裝Scala二、Scala基礎(chǔ)1.變量聲明2.表達(dá)式3.循環(huán)4.方法與函數(shù)5.集合、數(shù)組、List、Map映射、元組、Set6.類和對(duì)象

前言

Scala是一種將面向?qū)ο蠛秃瘮?shù)式編程結(jié)合在一起的高級(jí)語(yǔ)言,旨在以簡(jiǎn)潔、優(yōu)雅和類型安全的方式表達(dá)通用編程模式。Scala功能強(qiáng)大,不僅可以編寫簡(jiǎn)單腳本,還可以構(gòu)建大型系統(tǒng)。Scala運(yùn)行于Java平臺(tái),Scala程序會(huì)通過JVM被編譯成class字節(jié)碼文件,然后在操作系統(tǒng)上運(yùn)行。其運(yùn)行時(shí)候的性能通常與Java程序不分上下,并且Scala代碼可以調(diào)用Java方法、繼承Java類、實(shí)現(xiàn)Java接口等,幾乎所有Scala代碼都大量使用了Java類庫(kù)。

一、CentOs安裝Scala

1、下載Scala 到Scala官網(wǎng)https://www.scala-lang.org/download/下載Linux安裝包scala-2.12.7.tgz

解壓到指定目錄: $ tar -zxvf scala-2.12.7.tgz -C /opt/modules/

2、配置環(huán)境變量 export SCALA_HOME=/opt/modules/scala-2.12.7/ export PATH=

P

A

T

H

:

PATH:

PATH:SCALA_HOME/bin

3、測(cè)試 CMD中執(zhí)行scala -version命令

二、Scala基礎(chǔ)

1.變量聲明

Scala中變量的聲明使用關(guān)鍵字val和var。

聲明一個(gè)val字符串變量str:

scala> val str="hello scala"

str: String = hello scala

聲明變量時(shí)指定數(shù)據(jù)類型:

scala> val str:String="hello scala"

str: String = hello scala

將多個(gè)變量放在一起進(jìn)行聲明:

scala> val x,y="hello scala"

x: String = hello scala

y: String = hello scala

2.表達(dá)式

Scala中常用的表達(dá)式主要有條件表達(dá)式和塊表達(dá)式。

1、條件表達(dá)式

條件表達(dá)式主要是含有if/else的語(yǔ)句塊:

scala> val i=1

i: Int = 1

scala> val result=if(i>0) 100 else -100

result: Int = 100

也可以在一個(gè)表達(dá)式中進(jìn)行多次判斷:

scala> val result=if(i>0) 100 else if(i==0) 50 else 10

result: Int = 100

3.循環(huán)

Scala中的循環(huán)主要有for循環(huán)、while循環(huán)和do while循環(huán)三種。 1、for循環(huán)

for循環(huán)的語(yǔ)法:

for(變量<-集合或數(shù)組){

方法體

}

2、while循環(huán)

while循環(huán)的語(yǔ)法:

while(條件)

{

循環(huán)體

}

3、do while循環(huán)

do while 循環(huán)與while循環(huán)類似,但是do while循環(huán)會(huì)確保至少執(zhí)行一次循環(huán)。語(yǔ)法:

do {

循環(huán)體

} while(條件)

4.方法與函數(shù)

Scala中有方法與函數(shù)。Scala 方法是類或?qū)ο笾卸x的成員,而函數(shù)是一個(gè)對(duì)象,可以將函數(shù)賦值給一個(gè)變量。換句話說,方法是函數(shù)的特殊形式。 1、方法 方法的定義使用def關(guān)鍵字,語(yǔ)法:

def 方法名 (參數(shù)列表):返回類型={

方法體

}

2、函數(shù) 函數(shù)的定義與方法不一樣,語(yǔ)法:

(參數(shù)列表)=>函數(shù)體

定義一個(gè)匿名函數(shù),參數(shù)為a和b,且都是Int類型,函數(shù)體為a+b:

( a:Int, b:Int ) =>a+b

如果函數(shù)體有多行,可以將函數(shù)體放入一對(duì){}中,并且可以通過一個(gè)變量來引用函數(shù),變量相當(dāng)于函數(shù)名稱:

val f1=( a:Int, b:Int ) =>{ a+b }

對(duì)上述函數(shù)進(jìn)行調(diào)用:

f1(1,2)

函數(shù)也可以沒有參數(shù):

val f2=( ) =>println("hello scala")

對(duì)上述函數(shù)進(jìn)行調(diào)用:

f2()

3、方法與函數(shù)的區(qū)別 (1)方法是類的一部分,而函數(shù)是一個(gè)對(duì)象并且可以賦值給一個(gè)變量。 (2)函數(shù)可以作為參數(shù)傳入到方法中。 (3)方法可以轉(zhuǎn)換為函數(shù) 當(dāng)把一個(gè)方法作為參數(shù)傳遞給其它的方法或者函數(shù)時(shí),系統(tǒng)將自動(dòng)將該方法轉(zhuǎn)換為函數(shù)。

5.集合、數(shù)組、List、Map映射、元組、Set

Scala集合分為可變集合和不可變集合。可變集合可以對(duì)其中的元素進(jìn)行修改、添加、移除;而不可變集合,永遠(yuǎn)不會(huì)改變,但是仍然可以模擬添加、移除或更新操作。這些操作都會(huì)返回一個(gè)新的集合,原集合的內(nèi)容不發(fā)生改變。 Scala中的數(shù)組分為定長(zhǎng)數(shù)組和變長(zhǎng)數(shù)組,定長(zhǎng)數(shù)組初始化后不可對(duì)數(shù)組長(zhǎng)度進(jìn)行修改,而變長(zhǎng)數(shù)組則可以修改 Scala中的List分為可變List和不可變List,默認(rèn)使用的List為不可變List。不可變List也可以增加元素,但實(shí)際上生成了一個(gè)新的List,原List不變。 Scala中的Map也分可變的Map和不可變的Map,默認(rèn)為不可變Map。 1、不可變Map 創(chuàng)建一個(gè)不可變Map: val mp = Map(

"key1" -> "value1",

"key2" -> "value2",

"key3" -> "value3"

)

也可以使用以下寫法: val mp = Map(

("key1" , "value1"),

("key2" , "value2"),

("key3" , "value3")

)

2、可變Map 創(chuàng)建可變Map需要引入類scala.collection.mutable.Map,創(chuàng)建方式與不可變Map相同。訪問Map中key1的值,代碼:

val mp = Map(

("key1" , "value1"),

("key2" , "value2")

)

元組是一個(gè)可以存放不同類型對(duì)象的集合,元組中的元素不可以修改。 Set集合存儲(chǔ)的對(duì)象不可重復(fù)。Set集合分為可變集合和不可變集合,默認(rèn)情況下使用的是不可變集合,如果要使用可變集合,則需要引用 scala.collection.mutable.Set 包。

6.類和對(duì)象

1、類的定義 對(duì)象是類的具體實(shí)例,類是抽象的,不占用內(nèi)存,而對(duì)象是具體的,占用存儲(chǔ)空間。Scala中一個(gè)最簡(jiǎn)單的類定義是使用關(guān)鍵字class,類名必須大寫。類中的方法用關(guān)鍵字def定義,代碼:

class User{

private var age=20

def count(){

age+=1

}

}

如果一個(gè)類不寫訪問修飾符,則默認(rèn)訪問級(jí)別為Public。這與Java是不一樣的。關(guān)鍵字new用于創(chuàng)建類的實(shí)例。例如,調(diào)用上述代碼中的count()方法: new User().count() 2、單例對(duì)象 Scala中沒有靜態(tài)方法或靜態(tài)字段,但是可以使用關(guān)鍵字object定義一個(gè)單例對(duì)象,單例對(duì)象中的方法相當(dāng)于Java中的靜態(tài)方法,可以直接使用“單例對(duì)象名.方法名”方式進(jìn)行調(diào)用。單例對(duì)象除了沒有構(gòu)造器參數(shù)外,可以擁有類的所有特性。

例如,定義一個(gè)單例對(duì)象Person,該對(duì)象中定義了一個(gè)方法showInfo():

object Person{

private var name="zhangsan"

private var age=20

def showInfo():Unit={

println("姓名:"+name+",年齡:"+age)

}

}

可以在任何類或?qū)ο笾惺褂么aPerson.showInfo()對(duì)方法showInfo()進(jìn)行調(diào)用。 3、伴生對(duì)象 當(dāng)單例對(duì)象的名稱與某個(gè)類的名稱一樣時(shí),該對(duì)象被稱為這個(gè)類的伴生對(duì)象。類被稱為該對(duì)象的伴生類。類和它的伴生對(duì)象必須定義在同一個(gè)文件中,且兩者可以互相訪問其私有成員。例如以下代碼:

class Person() {

private var name="zhangsan"

def showInfo(){

println("年齡:"+Person.age) //訪問伴生對(duì)象的私有成員

}

}

object Person{

private var age=20

def main(args: Array[String]): Unit = {

var per=new Person()

println("姓名:"+per.name) //訪問伴生類的私有成員

per.showInfo()

}

}

4、get和set方法 Scala默認(rèn)會(huì)根據(jù)類的屬性的修飾符生成不同的get和set方法,生成原則: val修飾的屬性,系統(tǒng)會(huì)自動(dòng)生成一個(gè)私有常量屬性和一個(gè)公有g(shù)et方法。 var修飾的屬性,系統(tǒng)會(huì)自動(dòng)生成一個(gè)私有變量和一對(duì)公有g(shù)et/set方法。 private var修飾的屬性,系統(tǒng)會(huì)自動(dòng)生成一對(duì)私有g(shù)et/set方法,相當(dāng)于類的私有屬性,只能在類的內(nèi)部和伴生對(duì)象中使用。 private[this]修飾的屬性,系統(tǒng)不會(huì)生成get/set方法,即只能在類的內(nèi)部使用該屬性。

在Scala中,get和set方法并非被命名為getName和setName,而是被命名為name和name_=,由于JVM不允許在方法名中出現(xiàn)=,因此=被翻譯成$eq。

private String name = "zhangsan";

public String name() {

return this.name;

}

public void name_$eq(String x$1) {

this.name = x$1;

}

4、get和set方法 除了系統(tǒng)自動(dòng)生成get和set方法外,也可以手動(dòng)進(jìn)行編寫:

class Person {

//聲明私有變量

private var privateName="zhangsan"

def name=privateName //定義get方法

def name_=(name:String): Unit ={ //定義set方法

this.privateName=name

}

}

object Test{

def main(args: Array[String]): Unit = {

var per:Person=new Person()

//訪問變量

per.name="lisi“ //修改

println(per.name) //讀取

}

}

5、構(gòu)造器 Scala中的構(gòu)造器分為主構(gòu)造器和輔助構(gòu)造器。 主構(gòu)造器的參數(shù)直接放在類名之后,且將被編譯為類的成員變量,其值由初始化類時(shí)進(jìn)行傳入: //定義主構(gòu)造器,年齡age默認(rèn)為18

class Person(val name:String,var age:Int=18) {

}

object Person{

def main(args: Array[String]): Unit = {

//調(diào)用構(gòu)造器并設(shè)置name和age字段

var per=new Person("zhangsan",20)

println(per.age)

println(per.name)

per.name="lisi"http://錯(cuò)誤,val修飾的變量不可修改

}

}

將參數(shù)age設(shè)置為私有的,參數(shù)name設(shè)置為不可修改(val):

class Person(val name:String, private var age:Int) {

}

5、構(gòu)造器 構(gòu)造參數(shù)也可以不帶val或var,此時(shí)默認(rèn)為private[this] val: class Person(name:String,age:Int) { } 如果需要將整個(gè)主構(gòu)造器設(shè)置為私有的,只需要添加private關(guān)鍵字即可: class Person private(var name:String,var age:Int) { }

除了可以有主構(gòu)造器外,還可以有任意多個(gè)輔助構(gòu)造器。輔助構(gòu)造器的定義需要注意以下幾項(xiàng): (1)輔助構(gòu)造器的方法名稱為this。 (2)每一個(gè)輔助構(gòu)造器的方法體中必須首先調(diào)用其它已定義的構(gòu)造器。 (3)輔助構(gòu)造器的參數(shù)不能使用var或val進(jìn)行修飾。 5、構(gòu)造器 定義兩個(gè)輔助構(gòu)造器:

class Person {

private var name="zhangsan"

private var age=20

//定義輔助構(gòu)造器一

def this(name:String){

this()//調(diào)用主構(gòu)造器

this.name=name

}

//定義輔助構(gòu)造器二

def this(name:String,age:Int){

this(name)//調(diào)用輔助構(gòu)造器一

this.age=age

}

}

上述構(gòu)造器可以使用如下三種方式進(jìn)行調(diào)用:

var per1=new Person//調(diào)用無參主構(gòu)造器

var per2=new Person("lisi")//調(diào)用輔助構(gòu)造器一

var per3=new Person("lisi",28)//調(diào)用輔助構(gòu)造器二

柚子快報(bào)激活碼778899分享:開發(fā)語(yǔ)言 后端 Scala基礎(chǔ)

http://yzkb.51969.com/

文章來源

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19199482.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄