我读到在大多数情况下不需要为udf指定返回类型,但如果您添加返回
语句,那么它是必要的。
我有以下udf,它在内部迭代一个列表,我希望在匹配的情况下udf立即返回。基于我在这里找到的其他答案,我尝试了以下两种方法来定义返回类型:
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
})
上面的脚本只是返回一个错误
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
})
上面的剧本一直在说:
错误:方法删除别名有返回语句;需要结果类型
指定返回类型的正确方法是什么?
如下分别定义函数:
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 _)
问题内容: 这仅返回结果,我需要返回全部89%。有任何想法如何做吗? 问题答案: 简单的解决方案: 更漂亮的解决方案: 最漂亮的解决方案:
问题内容: 已经晚了,所以这一定是愚蠢的。我已将LinqPad连接到我的数据库,但似乎无法获得最简单查询的结果。 当我运行它时,LinqPad说它成功执行了(C#语句模式)。什么都不会被搁置。 我可以编写以下非常简单的Lambda(C#表达式模式): 那行得通。为什么?我更喜欢使用非lambda查询构建功能。我敢肯定,这一切都是愚蠢的。 问题答案: 我希望在声明模式下,您必须执行类似call的操作
问题内容: 我有一张桌子,里面有人和他们拥有的汽车 该查询为我提供了和拥有完全相同的汽车以及Lisa本人的人,这很好。 结果: 如果我想查找所有拥有相同汽车的人,请重新运行查询,结果应为我。 现在,我有一个Java名称列表,对于每个名称,我都运行此查询。真的很慢。无论如何,是否可以找到所有拥有相同汽车的人,并在单个数据库调用中将结果划分为组? 例如,使用第一个表。我可以运行将名称分组的查询。请注意
我在Java中所知的程度可以通过两种方式报告错误:返回值和异常。例如,下面的代码: 另一个观察结果是:如果取消对最后一条“return result”语句的注释,则会得到一条错误消息: 变量结果可能未初始化 ;如果对最后一条“return result”进行注释,则会得到一条错误消息: 缺少return语句 但是我已经在try子句中包含了return语句。
问题内容: 函数内部的这两个语句之间有区别吗? 还有这个? 前者周围有括号。 问题答案: 从C 14开始,它们经常是。C 14增加了一种边缘情况,其中返回值周围的括号可能会改变语义。此代码段显示了要声明的两个函数。唯一的区别是在返回值两边加上括号。 在第一个中func1返回int,在第二个中func1返回int&。语义上的差异与周围的括号直接相关。 autoC 11中引入了最新形式的说明符。在C