Scala学习笔记

Trait像拥有部分实现的接口,它提供一个介于单一继承和多重继承的中间地带,可以在其它类中混入它们,这样就可以用一组特性对类进行增强。用关键字with可以混入更多的trait。如果类已经继承了类,就可以使用with混入traittrait和抽象类的区别在于抽象类是对一个继承链的,类和类之前确实有父子类的继承关系,而trait则如其名字,表示一种特征,可以多继承。

 

Case classclass的区别:

1、      初始化的时候可以不用加new,也可以加

2、         toString实现得更加漂亮

3、         默认实现了equals和hashCode

4、         默认是可序列化的,serializable

5、         自动从scala.Product里面继承一些函数

6、         构造函数的参数是public的

7、         支持模式匹配。match{ case => }

 

Object类似没有参数的class,用来模式匹配和传递消息。在object下的成员全部都是静态的,如果在类中声明了与该类相同的名字的object则该object是该类的“半生对象”,可以理解把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化的操作。

Override是覆盖,overload是重载。

a!b是用来给前一个a对象发送后一个消息b

 

Scala List的排序函数sortWith

//原始方法:

//vallist=List("abc","bcd","cde")

scala>list.sortWith( (s,t) => s.compareTo(t) <0 )

res1:List[String] = List(abc,bcd,cde)

//匿名方法:

scala>list.sortWith( _.compareTo(_) <0 )

res2:List[String] = List(abc,bcd,cde)

//上述为字典序递增,若递减则改'<''>'即可

 

//获取参数

def getUrlParams: Map[String, String] = {
 
val paramStr =
    Option(dom.document.getElementById(
"fakeUrlSearch"))
     .map(_.innerHTML).getOrElse(dom.window.location.search)

 
val str1= paramStr.substring(1)
 
val pairs= str1.split("&").filter(s => s.length > 0)
 
val tmpMap= pairs.map(_.split("=", 2)).filter(_.length== 2)
  tmpMap.map(d => (d(
0), d(1))).toMap
}

 

def formatyyyyMMdd(date: Date) = {
  val y = date.getFullYear()
  val m = date.getMonth() + 1 match {
    case x if x <= 9 => "0" + x
    case x => x.toString
  }
  val d = date.getDate() match {
    case x if x <= 9 => "0" + x
    case x => x.toString
  }
  y + m + d
}

 

compose

compose 组合其他函数形成一个新的函数 f(g(x))

scala> val fComposeG = f _ compose g _
fComposeG: (String) => java.lang.String = <function>
 
scala> fComposeG("yay")
res0: java.lang.String = f(g(yay))

andThen

andThen  compose很像,但是调用顺序是先调用第一个函数,然后调用第二个,即g(f(x))

scala> val fAndThenG = f _ andThen g _
fAndThenG: (String) => java.lang.String = <function>
 
scala> fAndThenG("yay")
res1: java.lang.String = g(f(yay))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值