方法 my_udf 有 return 语句;需要结果类型

method my_udf has return statement; needs result type

我读到在大多数情况下不需要为 udf 指定 return 类型,但如果您添加 return 语句,则有必要。

我有以下 udf,它在内部迭代一个列表,如果立即匹配 udf returns,我希望这样做。根据我在这里找到的其他答案,我尝试了以下两种方法来定义 return 类型:

def removeSalutation = udf((name: String) => String {

    val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")

    for(salutation <- salutationList){
        if(name.endsWith(salutation)){
            return name.dropRight(salutation.length())
        }
    }
    return name
    
})

上面的脚本只是 return 一个错误

def removeSalutation = udf[String, String]((name: String) => {

    val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")

    for(salutation <- salutationList){
        if(name.endsWith(salutation)){
            return name.dropRight(salutation.length())
        }
    }
    return name
    
}) 

上面的脚本一直在说:

error: method removeSalutation has return statement; needs result type

指定 return 类型的正确方法是什么?

单独定义函数如下:

def _removeSalutation(name: String) : String = {
    val salutationList = List("MRS", "MR", "MSTR", "MISS", "MS", "DR")
    for(salutation <- salutationList){
        if(name.endsWith(salutation)){
            return name.dropRight(salutation.length())
        }
    }
    return name
}

val removeSalutation = udf(_removeSalutation _)