日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scala基础教程(五):函数、闭包

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scala基础教程(五):函数、闭包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數是一組一起執行任務的語句。可以將代碼放到獨立的功能。如何劃分你的代碼不同功能之間,但在邏輯上,劃分通常是讓每個函數執行特定的任務。

Scala有函數和方法,我們術語說的方法和函數互換用微小的差別。Scala方法是其中有一個名字,簽名,任選一些注釋,有的字節碼,其中如在Scala中函數是可被分配給一個變量的完整對象類的一部分。換句話說,函數,其被定義為某些對象的一個成員,被稱為方法。

函數定義可以出現在在源文件的任何地方,Scala允許嵌套函數的定義,那就是其他函數定義的內部函數定義。需要注意的最重要的一點是,Scala的函數名稱可以類似+, ++, ~, &,-, -- , , /, :等字符。

函數聲明:

Scala的函數聲明有如下形式:

def functionName ([list of parameters]) : [return type]

如果保留關閉等號和方法體的方法為隱式聲明,抽象的封閉類型是抽象本身。

函數定義:

Scala函數定義有如下形式:

def functionName ([list of parameters]) : [return type] = { ?? function body ?? return [expr] }

在這里,返回類型可以是任何有效的scala數據類型,參數列表將是用逗號和參數,返回值類型列表分離變量是可選的。非常類似于Java,一個返回語句可以在函數表達式可用情況下返回一個值。以下是這將增加兩個整數并返回的函數:

object add{ ?? def addInt( a:Int, b:Int ) : Int = { ????? var sum:Int = 0 ????? sum = a + b ? ????? return sum ?? } }

函數,它不返回任何東西,可以返回這相當于在Java中void,并表示該函數不返回任何單元。Scala中不返回任何東西函數被稱為過程。以下是語法

object Hello{ ?? def printMe( ) : Unit = { ????? println("Hello, Scala!") ?? } }

調用函數:

Scala提供了一些語法的變化來調用方法。以下是調用一個方法的標準方法:

functionName( list of parameters )

如果函數被對象的一個實例調用使用,那么使用類似于Java點標記如下:

[instance.]functionName( list of parameters )

下面是一個例子用來定義,然后調用函數:

object Test { ?? def main(args: Array[String]) { ??????? println( "Returned Value : " + addInt(5,7) ); ?? } ?? def addInt( a:Int, b:Int ) : Int = { ????? var sum:Int = 0 ????? sum = a + b ? ????? return sum ?? } }

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala C:/>scala Test Returned Value : 12 ? C:/>

Scala函數是Scala編程的核心,這就是為什么Scala被假定為一個函數式編程語言。以下是Scala程序員理解相關Scala函數的一些重要的概念。

函數按名稱調用

使用命名參數函數

函數使用可變參數

遞歸函數

默認參數值

高階函數

嵌套函數

匿名函數

部分應用函數

柯里函數

?

?

閉包是函數,它的返回值取決于此函數之外聲明一個或多個變量的值。考慮下面的一塊使用匿名函數的代碼:

val multiplier = (i:Int) => i * 10

在這里,在函數體中使用的唯一變量, i * 0, 為i,其被定義為一個參數的函數。現在,讓我們來看另一塊代碼:

val multiplier = (i:Int) => i *factor

有兩個自由變量的乘數:i和factor。其中一個i是一個正式函數參數。因此,它被綁定到一個新的值在乘數每次調用。然而,factor不是一個正式的參數,那么這是什么?讓我們增加一行代碼:

var factor = 3

val multiplier = (i:Int) => i *factor

現在,factor具有參考變量在函數之外,但為封閉范圍的變量。讓我們試試下面的例子:

object Test {

?? def main(args: Array[String]) {

????? println( "muliplier(1)value = " +? multiplier(1) )

????? println( "muliplier(2)value = " +? multiplier(2) )

?? }

?? var factor = 3

?? val multiplier = (i:Int) => i * factor

}

讓我們編譯和運行上面的程序,這將產生以下結果:

C:/>scalac Test.scala

C:/>scala Test

muliplier(1) value = 3

muliplier(2) value = 6

?

C:/>

上面的函數引用factor并讀取每個時間的當前值。如果函數沒有外部引用,那么它就是封閉了自己。無需外部環境是必需的。

?

?

考慮下面這個簡單的例子,我們給一個字符串類型的 val 變量:

object Test { ?? val greeting: String = "Hello, world!" ? ?? def main(args: Array[String]) { ????? println( greeting ) ?? } }

在這里,上面的值類型是從Java的java.lang.String借來的,因為Scala的字符串也是Java字符串。這一點是非常好的,要注意:每 一個Java類可用在Scala中。因此,Scala沒有String類并直接利用Java字符串String類。因此,這一章已被寫入保持Java String的基礎。

在Scala中與在Java中一樣,一個字符串是不可變的對象,也就是,這是不能被修改的對象。另一方面,對象是可以修改的,如數組對象,被稱為可變對象。由于字符串是非常有用的對象,在本節的其余部分,我們目前最重要了解類java.lang.String的方法定義。

from: http://www.yiibai.com/scala/scala_basic_syntax.html

總結

以上是生活随笔為你收集整理的Scala基础教程(五):函数、闭包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野结衣一区二 | 好吊操妞 | 91视频区 | 天天看视频 | 亚洲男人天堂 | 欧洲性生活片 | 在线视频一区二区三区四区 | 色一情一交一乱一区二区三区 | 亚洲精品白虎 | 青青草综合 | 双性娇喘浑圆奶水h男男漫画 | 久久久激情网 | 亚洲精品乱码久久久久久久 | 成人免费高清在线播放 | 午夜精品久久久久久久蜜桃 | 男人的天堂黄色 | 一级特黄妇女高潮2 | 极品尤物在线观看 | 国产天堂资源 | 武侠古典av | 91超碰国产在线 | 久草青青| 成人国产精品入口 | 色玖玖综合 | 麻豆传媒在线播放 | 精品国产视频在线 | 国模人体一区二区 | 亚洲美女一区 | 亚洲综合中文字幕在线 | 领导揉我胸亲奶揉下面 | 中文字幕在线免费视频 | 日韩av电影网站 | 日本高清中文字幕 | 国产女18毛片多18精品 | 天天干干天天 | 久久久久久久久国产精品一区 | 欧洲成人一区二区三区 | 国产三级观看 | 亚洲男人天堂2020 | 久久夜夜操妹子 | 国精产品一区一区三区 | 成人免费观看av | 免费暧暧视频 | 亚洲区小说 | 色噜噜狠狠一区二区三区 | 日本黄色大片网站 | 欲求不满的岳中文字幕 | 精品国产免费看 | 蛇女欲潮性三级 | 狠狠狠狠狠狠狠干 | 99精品免费视频 | 亚洲欧美日韩精品久久亚洲区 | 熟妇人妻系列aⅴ无码专区友真希 | 中文字幕综合在线 | 粉嫩av懂色av蜜臀av分享 | 六月综合 | 中文字幕第31页 | 成人综合激情网 | 欧美激情视频在线观看 | 中文字幕亚洲在线 | 黄色免费av网站 | 开心色站 | 亚洲少妇中文字幕 | 亚洲视频一二三四 | 国产熟妇一区二区三区aⅴ网站 | 国产精品无码成人网站视频 | 丰满双乳秘书被老板狂揉捏 | 日本精品久久久久 | 老狼影院伦理片 | 特黄视频免费看 | 亚洲av男人的天堂在线观看 | 美女黄色影院 | 日本美女黄视频 | 夫妻性生活黄色片 | 丁香六月av | 国产成人精品一区二区三区在线 | 日本十八禁视频无遮挡 | 黄色av网站免费在线观看 | 国产又粗又猛又黄又爽无遮挡 | 中文字幕+乱码+中文 | 少妇特黄一区二区三区 | 在线激情小视频 | 久青草视频在线观看 | 色伊人| 午夜免费网站 | 欧美大片网站 | 国产激情综合五月久久 | 国产美女明星三级做爰 | 亚洲污片| 免费一级黄 | 玖玖精品视频 | 欧美日韩性生活视频 | 中文字幕自拍偷拍 | 日韩免费电影一区 | 成人综合婷婷国产精品久久 | 中文字幕欧美人妻精品 | 一卡二卡三卡四卡五卡 | 亚洲深爱| 性做久久久久久久免费看 |