Scala过滤函数需要什么样的情况?
我是scala/spark的新手,我很好奇Scala过滤函数需要什么样的情况?,scala,apache-spark,Scala,Apache Spark,我是scala/spark的新手,我很好奇案例是否真的需要 pairs.filter{case (key, value) => value.length < 20} pairs.filter{case(key,value)=>value.lengthtuple.\u 2.length
案例是否真的需要
pairs.filter{case (key, value) => value.length < 20}
pairs.filter{case(key,value)=>value.length<20}
这不是必需的。该语法适用于分部函数,以下语法也适用:
pairs.filter(tuple => tuple._2.length < 20)
pairs.filter(tuple=>tuple.\u 2.length<20)
或相当于:
pairs.filter(_._2.length < 20)
pairs.filter(u.u 2.length<20)
这不是必需的。该语法适用于分部函数,以下语法也适用:
pairs.filter(tuple => tuple._2.length < 20)
pairs.filter(tuple=>tuple.\u 2.length<20)
或相当于:
pairs.filter(_._2.length < 20)
pairs.filter(u.u 2.length<20)
您正在分解元组。因此,您必须使用模式匹配语法,它使用case
关键字
pairs.filter{case (key, value) => value.length < 20}
pairs.filter{case(key,value)=>value.length<20}
这将使用一个参数(2元组)的函数调用过滤器
pairs.filter{(key, value) => value.length < 20}
pairs.filter{(键,值)=>value.length<20}
此函数使用两个参数的函数调用筛选器。这不是正确的函数类型,将产生类型错误。您正在分解元组。因此,您必须使用模式匹配语法,它使用case
关键字
pairs.filter{case (key, value) => value.length < 20}
pairs.filter{case(key,value)=>value.length<20}
这将使用一个参数(2元组)的函数调用过滤器
pairs.filter{(key, value) => value.length < 20}
pairs.filter{(键,值)=>value.length<20}
此函数使用两个参数的函数调用筛选器。这不是正确的函数类型,将产生类型错误。第二种语法仅在我记得的2.12之后才可用。@GáborBakos第二种语法在Scala中根本不起作用。元组解构只在dotty中可用,不需要花括号。@YuvalItzchakov感谢您的更正,我记得在某处看到过它,但似乎我需要等待更长的时间才能使用该语法。第二种语法仅在我记得的2.12之后才可用。@GáborBakos第二种语法在Scala中根本不起作用。元组解构只在dotty中可用,不需要花括号。@YuvalItzchakov感谢您的更正,我记得在某处见过它,但似乎我需要等待更长的时间才能使用该语法。模式匹配只需要case。但是有一个“u”可以用来匹配模式。模式匹配需要大小写。但是有一个“u”可以用来匹配模式。