scala - 有没有办法将默认案例值作为参数传递
问题描述
我正在尝试查看是否有一种方法可以将默认大小写的值合并到匹配表达式中
item match {
case null => false
case _:String => _.matches(params)
}
我试过寻找不同的选择,但我真的找不到解决方案。
对于上下文,这是这段代码的一部分,在spark dataframe
x.filter(row => row.getAs[String]("colname").matches("""/regex/""")).count()
但是有一些偶然的null
价值观会让一切都崩溃。
我知道我可以这样做以获得所需的结果,但再次计算它没有意义
x.filter(row => row.getAs[String]("colname") match{
case null => false
case _ => row.getAs[String]("colname").matches("""\d""")
}).count()
任何建议或指示都会有所帮助。谢谢
解决方案
要匹配所有内容,您只需要使用没有类型归属的变量名:
item match {
case null => false
case i => i.matches(params)
}
所以在你的情况下:
x.filter(row =>
row.getAs[String]("colname") match {
case null => false
case r => r.matches("""\d""")
}
).count()
如果要检查项目是否为空,还可以使用Option.apply
which 返回None
值是否为空null
,Some
否则,例如:
Option(item).fold(false)(_.matches(params))
推荐阅读
- google-compute-engine - 如何使用自定义磁盘和外部 IP 创建谷歌计算引擎模板
- kubernetes - 如何使用 java Kubernetes 客户端实现“kubectl apply -f stuff.yaml”
- c# - 使用 Xamarin,如何将 .csv 文件上的数据存储到本地 android 存储?
- node.js - Mongoose 模型 ObjectId 引用不起作用
- r - 应用导致列表而不是数据框
- java - Java调度程序拒绝ArrayList元素
- directx - DirectX11 中有渲染模式吗?
- java - 使用 Spring Boot OAuth2 访问 Spring Security 中的日志记录
- r - 修剪一些日期的“尾巴”
- php - Xpath 从多个标签中获取文本内容