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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

scala学习手记26 - 重用函数值

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scala学习手记26 - 重用函数值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數值對消除代碼重復有很大的幫助。但是像函數值這樣直接將一個函數作為另一個函數的參數卻不太利于函數值本身的重用。

來看一個例子:

class Equipment(val routine: Int => Int) {def simulate(input: Int) = {print("Running simulation...")routine(input)} }

在這個例子里將函數值作為參數傳到了構造器中。

看一下如何使用:

val equipment1 = new Equipment({input=>println("calc with " + input); input}) val equipment2 = new Equipment(input=>{println("calc with " + input); input})equipment1.simulate(4) equipment1.simulate(6)

執行結果如下:

上面的代碼中還是出現了重復代碼。新建實例equipment1和equipment2時,向Equipment構造函數中傳遞的函數值是一樣的。要避免這樣的函數值重復,可以將函數值賦給一個val,然后調用的時候直接使用val。就像下面這樣:

val calculate = { input: Int => println("calc with " + input); input }val equipment1 = new Equipment(calculate) val equipment2 = new Equipment(calculate)equipment1.simulate(4) equipment1.simulate(6)

這里將函數值保存在一個val引用calculate中。請注意下,在這里需要聲明函數值參數的類型。在之前是不需要的。那是因為scala可以推斷出直接嵌入到函數中的函數值的參數類型。

實際上scala還支持一種更地道的方式:在需要函數值的地方可以傳入普通函數。所以如下的代碼也是可以的:

def calculate(input: Int) = {println("calc with " + input)input }val equipment1 = new Equipment(calculate) val equipment2 = new Equipment(calculate)

這樣看起來更自然些,是不是。

就這樣。

##########

轉載于:https://www.cnblogs.com/amunote/p/5712910.html

總結

以上是生活随笔為你收集整理的scala学习手记26 - 重用函数值的全部內容,希望文章能夠幫你解決所遇到的問題。

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