2017-07-20 69 views
0

所以我有這樣的UDF:如何火花打破一個for循環UDF

def myfunc = {udf((A:mutable.WrappedArray[mutable.WrappedArray[String]],B:mutable.WrappedArray[mutable.WrappedArray[String]]) 
=> breakable{for(i <- 0 to 2)yield(if (A(i)==B(i)) "U" //want to break here 
else "N" //break here)})} 

這回我多ü或N的,我希望它返回只有一個字母作爲最終結果。我如何分解for循環?

+1

什麼是你_really_試圖與UDF做? –

回答

3

exists方法測試一些謂詞是一個集合中的至少一個元素爲真:

if ((0 to 2).exists(i => A(i) == B(i))) "U" else "N" 
1

你可以做以下

import scala.util.control.Breaks._ 
def myfunc = udf((A: mutable.WrappedArray[mutable.WrappedArray[String]], B: mutable.WrappedArray[mutable.WrappedArray[String]]) 
=> breakable{ 
    for(i <- 0 to 2) yield 
     if (A(i)==B(i)) { 
     "U" 
     break 
     } 
     else { 
     "N" 
     break 
     } 
    })