scala

A 9-post collection

Scala模式匹配的`@`操作符

阅读Spark源码的时候,经常碰到模式匹配中带着@这样的写法,如: object CombineLimits extends Rule[LogicalPlan] { def apply(plan: LogicalPlan): LogicalPlan = plan transform { case ll @ Limit(le, nl @ Limit(ne, grandChild)) => Limit(

拿Scala的Parser写了个解析JSON二维数组的工具

感叹Scala的语法解析器之强大,几行代码就可以搞定我的解析需求,可惜相比专门的JSON解析库(ObjectMapper,fastjson)性能还差很多,不确定是否和apply的处理有关,抽空在研究下。 package cn.zhaishidan.test import scala.util.parsing.combinator.syntactical._ import scala.util.parsing.input.CharArrayReader import scala.

小心Scala/Java的split函数

最近使用scala在spark上做开发,遇到一个怪异的问题,代码逻辑没问题,最终处理的数据居然不合逻辑。起初以为是spark的问题,最终排查后发现是scala的split函数的问题。 也不能说是scala的split函数有问题吧,它的split默认行为与其他语言不一样。 在python下: a = '1,2,3,,,'.split(',') # a的值为['1', '2', '3', '', '', ''] 在js下: a

Scala变量和关键字重名的问题

如果定义的变量和scala了重名了,比如type,import,可以通过以下方式解决: val `type` = "string" 将变量使用两个`括起来即可,使用变量时,也需要带着。

Scala中的隐式转换、隐式参数和隐式类

隐式转换是scala中一个非常重要的概念,在scala中到处可见, 隐式转换 先看代码: class Info class RichInfo(info: Info) { def show { println("RichInfo ...") } } object Test extends App { implicit def info2Rich(info: Info) = new RichInfo(info)