中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

scala-04For與Function進階實戰(zhàn)、Lazy的使用-創(chuàng)新互聯(lián)

For與Function進階實戰(zhàn)、Lazy的使用

10年積累的做網(wǎng)站、成都網(wǎng)站制作經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先建設網(wǎng)站后付款的網(wǎng)站建設流程,更有烏達免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

一、for循環(huán)的進階實戰(zhàn)

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

For(i<- 1 to 3;j<- 3 to 8)

Println((100*i+j)+” ")

也可在for循環(huán)中加入條件表達式:

For(i<- 1 to 3;j<- 3 to 8  if i!=j)

Println((100*i+j)+”?。?

}

定義函數(shù)的時候一般函數(shù)都有值,函數(shù)可以作為函數(shù)的參數(shù)去賦值

def  Adsds(x: int) =x+100

val add=(x: int) => x+200

二、Function的進階實戰(zhàn)

三、Lazy延遲加載和延遲執(zhí)行

1、For&Function進階

(1)For 使用

def main(args: Array[String]): Unit = {    for (i <- 1 to 2; j <- 1 to 2 if i != j)  //將1到2的集合每次循環(huán)賦值給i,將1到2的集合每次循環(huán)賦值給j,如果i!=j,就輸出當i=1,j=2結果為102,當i=2,j=1結果是201      println((100 * i + j) + " ")}

運行代碼得到如下結果:102  201

我們看到與Java不同的是,代碼i,j都沒有進行申明類型,它可以根據(jù)右側類型元素自動進行類型推導。類型推導是Scala中非常強大的一個內容。

(2)Function函數(shù)使用

函數(shù)有值是scala中的非常重要的特點,因為函數(shù)有值,函數(shù)執(zhí)行必然有結果,所以函數(shù)可以作為函數(shù)的參數(shù)去傳遞,這是一個非常重要的結論,這個結論導致了函數(shù)式編程很多重要的技巧。

def addA(x: Int) = x + 100

//定義函數(shù)addA,它的參數(shù)類型是整數(shù),因為函數(shù)有值,所以一般有=號,=號右側是函數(shù)計算過程println("The result from a function is :" + addA(2))

匿名函數(shù)-是函數(shù)最常見的一種形態(tài),因為Scala里只關注函數(shù)怎么做,不關注它的名字

def main(args: Array[String]): Unit = {    val add = (x: Int) => x + 200          //將匿名函數(shù)的值賦值給常量add,=>是將接收的整數(shù)類型去加200    println("The result from a val is " +  add(2)) }

函數(shù)返回值一般不指定,Scala會自動推導,但遞歸函數(shù)除外,因為遞歸函數(shù)并不知道上一次計算返回的什么樣的結果

//這里是求斐波那序列的值def main(args: Array[String]): Unit = {    def fac(n:Int): Int = if (n <= 0) 1 else n * fac(n - 1) //這里可以看到返回類型是int,如果不指定會報錯     println("The result from  a fac is : " + fac(10) )}

有默認參數(shù)的函數(shù)

//content參數(shù)被默認為I love Sparkdef main(args: Array[String]): Unit = {    def combine(content: String, left: String = "[", right: String = "]") = left + content + right    println("The result from a combine is : " + combine("I love Spark", "@", "@"))}

參數(shù)可變的函數(shù)

//通過*表示可以輸入多個參數(shù),即參數(shù)可變.這里將傳入的參數(shù)累加,賦值給resultdef main(args: Array[String]): Unit = {      def connected(args: Int*) = {          var result = 0          for(arg <- args) result += arg          result      }     println("The result from a connected is : " + connected(1,2,3,4,5) )     println("The result from a connected is : " + connected(1,2,3,4,5,6) )}

2、lazy懶加載

如果在E盤下不存在test.txt, 使用 Source.fromFile()函數(shù)讀取文件,就會報錯拋出異常, 但是如果引用的變量或常量前加上 lazy,它只有在第一次被使用時,才被實例化,lazy會延遲執(zhí)行。當發(fā)生錯誤,但沒有立即被使用,程序還是OK,只有在被使用才會報錯,懶加載的意義在于延遲執(zhí)行,可以看到一個計算的更多步驟,優(yōu)化的范圍更大,優(yōu)化的力度也更大。

例如我們在java中,一個錯誤就可能讓我們的后邊的工作無法進行,而延遲執(zhí)行,可以放任這個錯誤,繼續(xù)后邊的工作,再從整體的邏輯里再去優(yōu)化解決這個錯誤,會更好。

import scala.io.Sourceobject Test {  def main(args: Array[String]): Unit = {    lazy val file = Source.fromFile("e:\\test.txt")    println("Scala");//    for (line <- file.getLines()) {//      println(line);//    }  }}

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

網(wǎng)站欄目:scala-04For與Function進階實戰(zhàn)、Lazy的使用-創(chuàng)新互聯(lián)
地址分享:http://www.rwnh.cn/article14/dgsode.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供外貿建站云服務器、網(wǎng)站設計公司、品牌網(wǎng)站設計、手機網(wǎng)站建設、網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化
红桥区| 阳城县| 无棣县| 波密县| 遵义县| 舟曲县| 宽甸| 德昌县| 博湖县| 南川市| 如皋市| 永善县| 太白县| 车致| 衡山县| 新兴县| 濮阳市| 抚顺市| 双桥区| 南丰县| 兴城市| 南华县| 保定市| 阿荣旗| 北海市| 太白县| 木兰县| 诏安县| 灌阳县| 郴州市| 通化市| 上思县| 南和县| 射阳县| 凤翔县| 鹰潭市| 揭西县| 清丰县| 花莲县| 大埔区| 丰镇市|