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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

scala条件替换_scala - 有没有办法用scala中的高阶方法替换嵌套的For循环 - SO中文参考 - www.soinside.com...

發(fā)布時(shí)間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 scala条件替换_scala - 有没有办法用scala中的高阶方法替换嵌套的For循环 - SO中文参考 - www.soinside.com... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

有沒有辦法用scala中的高階方法替換嵌套的For循環(huán)

問題描述 投票:0回答:1

我有一個(gè)mutableList,并希望獲取所有行的總和,并根據(jù)某些條件將其行替換為其他值。下面的代碼對(duì)我來說工作正常,但我想問有沒有辦法擺脫嵌套的for循環(huán),因?yàn)檠h(huán)會(huì)降低性能。我想使用scala高階方法而不是嵌套for循環(huán)。我嘗試了flodLeft()更高階的方法來替換單個(gè)for循環(huán)但是無法實(shí)現(xiàn)替換嵌套for循環(huán)

def func(nVect : Int , nDim : Int) : Unit = {

var Vector = MutableList.fill(nVect,nDimn)(math.random)

var V1Res =0.0

var V2Res =0.0

var V3Res =0.0

for(i

for (j

var resultant = Vector(i).zip(Vector(j)).map{case (x,y) => x + y}

V1Res = choice(Vector(i))

V2Res = choice(Vector(j))

V3Res = choice(resultant)

if(V3Res > V1Res){

Vector(i) = res

}

if(V3Res > V2Res){

Vector(j) = res

}

}

}

}

scala

1個(gè)回答

1

投票

這段代碼中沒有“for循環(huán)”; for語句已被編譯器轉(zhuǎn)換為foreach調(diào)用,因此它已經(jīng)使用了高階方法。這些foreach調(diào)用可以明確寫出,但它對(duì)性能沒有任何影響。

使代碼編譯然后清理它給出了:

def func(nVect: Int, nDim: Int): Unit = {

val vector = Array.fill(nVect, nDim)(math.random)

for {

i

j

} {

val res = vector(i).zip(vector(j)).map { case (x, y) => x + y }

val v1Res = choice(vector(i))

val v2Res = choice(vector(j))

val v3Res = choice(res)

if (v3Res > v1Res) {

vector(i) = res

}

if (v3Res > v2Res) {

vector(j) = res

}

}

}

請(qǐng)注意,使用單個(gè)for對(duì)結(jié)果沒有任何影響,它看起來更好!

此時(shí)很難進(jìn)一步改進(jìn)。唯一可能的并行性是內(nèi)部map調(diào)用,但矢量化這幾乎肯定是一個(gè)更好的選擇。如果choice很昂貴,那么結(jié)果可能會(huì)被緩存,但是當(dāng)vector更新時(shí),需要更新此緩存。

如果choice可以在計(jì)算完所有交叉總和之后的第二遍中完成,那么它將更加平行,但顯然也會(huì)改變結(jié)果。

熱門問題

總結(jié)

以上是生活随笔為你收集整理的scala条件替换_scala - 有没有办法用scala中的高阶方法替换嵌套的For循环 - SO中文参考 - www.soinside.com...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。