1. 程式人生 > >scala 學習筆記六 推導

scala 學習筆記六 推導

表達式 過濾 一個 mage 介紹 val 關鍵字 定義 循環

  1、介紹

    在Scala中,推導將生成器、過濾器、和定義組合在一起。

  2、例子

    技術分享圖片

    有一種將result用作val(而不是var)的方式,:“就地”構建result,而不是逐項構建,利用yield關鍵字,當你聲明yield n時,它會把n交出來,使其成為result的一部分,下面的例子

    技術分享圖片

    yield 總是會填充容器,但是在第194行並沒有聲明result的類型,Scala會從推導要遍歷的容器中推斷出類型。還可以在推斷內部定義值。

    技術分享圖片

    註意:沒有將n和isOdd聲明為val或var。n和isOdd在循環中每次叠代時都會發生變化,但是不能人為修改他們,依靠Scala來完成這個任務。可以將他們看作循環每次叠代時都會設置其值的臨時變量。

    

    yield表達式也可以組合

    技術分享圖片

    註意,只有在推導內部才能不為新標識符聲明val或var

    

    推導可以嵌套

    技術分享圖片

    這裏我們讓類型推斷來確定yielding3的返回類型,每個yield都會產生一個Vector,因此最終結果是一個Vector的Vector

scala 學習筆記六 推導