Scala学习笔记(一)
Scaladoc的使用:
1) 登录www.scala-lang.org/api提供在线浏览,地址栏可以输入关键词直接搜索方法和或类
2) 登录http://scala-lang.org/download/all.html,下载副本提供离线浏览scaladoc
3) 通过搜索关键词点击进入所属类页面下,比如搜索BigInt类,可以看到左上角显示的scala.math.BigInt代表类所在的包路径,C和O分别代表对应的类或伴生对象,右上角是对应的链接入口,伴生对象中的方法类似于Java类中的静态方法。
Scala方法的使用
- 方法的一般调用
- 通常用a 方法 b 作为a.方法(b) 的简写,这里的方法是一个带有两个参数的方法(一个隐式一个显式)。
- 无参方法不修改对象,调用时无需写括号
- 符号重载和apply方法
- 在Java中不允许对操作符进行重载,但scala支持这一行为。这也就意味着你会在数值类看到对各个操作符的定义,你完全可以在有必要的情况下进行操作符重载。
- 在很多类或伴生对象中都可以看到apply方法的存在,但为什么把它和符号重载放在一起呢,因为在使用过程中完全可以将它当作符号()的方法重载。举例来说,”Hello”(4)是“Hello”.apply(4)的简写,此处的apply是StringOps类中的方法,返回字符串的第i个字符。
- 通配符
在Java中的通配符是“*”,而在scala中则是“_”。
- 导入包、类或方法。例如:import scala.math._
- 以紧凑的表示法给出函数定义。在scala中,方法可以以函数作为参数,调用类似方法时,就可以使用通配符进行简写。例如:count(p=>p.isUpper)可以简写为count(_.isUpper),如下图:
- 其他
Scala中的方法的使用有很多小窍门:
- 使用方括号来表示类型参数,例如Seq[Char]为元素类型为Char的序列
- GenSeq、GenIterable、GenTraversableOnce是具有细微差别的序列类型
- 使用数值类型,要多查阅RichInt、RichDouble类,如果是字符串类型则要多查阅StringOps类。
- 有些方法是有隐式参数的。例如:StringOps的sorted方法def sorted[B >: Char](implicit ord: math.Ordering[B]): String,定义中的implicit ord 就代表sorted方法是“隐式”提供的。
· Sorted方法定义中B >: Char 代表“Char”的任何超类型
练习一
- 在scala中获取字符串的首字符和尾字符
- 创建随机文件的方式之一是生成一个随机的BigInt,然后将它转换成三十六进制,交出类似于“qsnv…39o06…”这样的字符串。
- 用BigInt计算2的1024次方
· 使用pow()方法
· 使用位移 <<