91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Scala編程之惰性函數

發布時間:2020-06-03 16:38:38 來源:網絡 閱讀:395 作者:Stitch_x 欄目:大數據

一、為什么需要惰性函數

惰性計算(盡可能延遲表達式求值)是許多函數式編程語言的特性。惰性集合在需要時提供其元素,無需預先計算它們,這帶來了一些好處。首先,您可以將耗時的計算推遲到絕對需要的時候。其次,您可以創造無限個集合,只要它們繼續收到請求,就會繼續提供元素。函數的惰性使用讓您能夠得到更高效的代碼。Java并沒有為惰性提供原生支持, Scala提供了,使用很方便。

二、java實現懶加載

懶漢式

public class LazyDemo {

    private String property;  //屬性也可能是一個數據庫連接,文件等資源
    public String getProperty(){
        if (property==null){
            property=initProperty();  //如果沒有初始化過,那么進行初始化
        }
            return property;
    }

    private String initProperty() {
        return "property";
    }
}

三、惰性函數介紹

當函數被聲明為lazy的時候,函數并不會立即執行,而是當我們首次對這個函數進行調用了,我們才會執行這個函數。所以我們把這個叫做惰性函數(在java中叫做懶加載)。

四、案例

代碼一:

object LazyDemo {

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

  val res= sum(10,20) //沒有lazy的修飾,這個函數就是eager的
    println("================")
   // println("res:"+res)
  }

  def sum(a:Int,b:Int):Int={
    println("sum執行了")
    a+b
  }
}

輸出: ================
sum執行了
res:30
代碼二:

object LazyDemo {

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

   lazy val res= sum(10,20) // lazy修飾,sum()函數不會被立即執行,要首次被調用之后再執行
    println("================")
   // println("res:"+res)
  }

  def sum(a:Int,b:Int):Int={
    println("sum執行了")
    a+b
  }
}

輸出: ================

代碼二:

object LazyDemo {

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

   lazy val res= sum(10,20) // lazy修飾,sum()函數不會被立即執行,要首次被調用之后再執行
    println("================")
    println("res:"+res)      //調用sum方法
  }

  def sum(a:Int,b:Int):Int={
    println("sum執行了")
    a+b
  }
}

輸出: ================
sum執行了
res:30

綜上我們可以看出,scala中被lazy修飾之后,可以實現懶加載,這在大數據項目中數據的加載計算會非常有用!!

五:注意

1)lazy不能修飾var類型變量
2)函數被lazy修飾后,會導致函數的運行被推遲,我們在聲明一個變量,如果給變量加個lazy,那么變量的聲明也會被推遲,只有被使用時才會聲明生效。例如:

scala> val a=100
a: Int = 100

scala> lazy val b=1000
b: Int = <lazy>

scala> println(b)
1000
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

湘潭县| 金乡县| 鲁甸县| 扬州市| 临颍县| 耒阳市| 理塘县| 济阳县| 罗山县| 弥渡县| 河南省| 称多县| 卓资县| 辰溪县| 祥云县| 滦南县| 南昌县| 衡阳县| 西充县| 城市| 寻乌县| 平顶山市| 随州市| 浪卡子县| 富裕县| 玉环县| 达日县| 藁城市| 岳普湖县| 海伦市| 龙井市| 东台市| 宣武区| 淳化县| 江安县| 桑植县| 定州市| 巨野县| 福泉市| 阿坝| 隆回县|