Scala中@符号的作用是什么?Spark源码场景下的用法解析
Scala模式匹配中@符号的用途
你看到的j @ ExtractEquiJoinKeys(joinType, leftKeys, rightKeys, nonEquiCond, ...)是Scala模式匹配里的变量绑定语法,核心作用是在解构匹配对象的同时,把整个匹配到的实例赋值给变量j。
这样写的好处是:后续代码里既能直接使用解构出来的joinType、leftKeys等细分字段,也能随时调用完整的ExtractEquiJoinKeys实例(也就是j),不用再通过字段重新组装对象。
举个简单的样例类匹配例子,更直观:
// 定义样例类 case class Book(title: String, author: String, pages: Int) // 模式匹配中使用@绑定 val myBook = Book("Scala实战", "张三", 300) myBook match { case b @ Book(t, a, p) => println(s"书名:$t,作者:$a,页数:$p") println(s"完整书籍对象:$b") }
这里变量b就绑定了整个Book实例,既可以用解构出的t、a、p,也能直接操作b这个完整对象。
回到Spark的代码场景,j就是匹配到的整个ExtractEquiJoinKeys实例,后续逻辑如果需要用到这个完整对象,直接用j即可。
内容的提问来源于stack exchange,提问作者olaf
相关产品推荐
相关产品推荐

