《快学Scala》(英文版:《Scala for the Impatient》),代码已传github:
https://github.com/vernonzheng/scala-for-the-Impatient
书为第一版。scala为2.11.4,jdk1.7.45,操作系统Mac OS X Yosemite 10.10.1。
第一章 基础
1.1
在Scala REPL中键入3,然后按Tab键。有哪些方法可以被应用?
答:
1 2 3
| % + > >>> isInstanceOf toDouble toLong unary_+ | & - >= ^ toByte toFloat toShort unary_- * / >> asInstanceOf toChar toInt toString unary_~
|
1.2
在Scala REPL中,计算3的平方根,然后再对该值求平方。现在,这个结果与3相差多少?(提示:res变量是你的朋友)
答:
1 2 3 4 5 6 7 8
| scala> import scala.math._ import scala.math._ scala> sqrt(3) res7: Double = 1.7320508075688772 scala> 3 - res7 res8: Double = 1.2679491924311228
|
1.3
res变量是val还是var?
答:
res变量是val
1.4
Scala允许你用数字去乘字符串—去REPL中试一下”crazy”*3。这个操作做什么?在Scaladoc中如何找到这个操作?
答:
1 2
| scala> "crazy"*3 res9: String = crazycrazycrazy
|
scala docs 去查StringOps:http://www.scala-lang.org/api/current/#scala.collection.immutable.StringOps
1.5
10 max 2的含义是什么?max方法定义在哪个类中?
答:
1 2
| scala> 10 max 2 res10: Int = 10
|
返回两者中比较大的一个
max方法定义在RichInt方法中。http://www.scala-lang.org/api/current/#scala.runtime.RichInt
1.6
用BigInt计算2的1024次方
答:
1 2
| scala> BigInt(2).pow(1024) res13: scala.math.BigInt = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
|
1.7
为了在使用probablePrime(100,Random)获取随机素数时不在probablePrime和Radom之前使用任何限定符,你需要引入什么?
答:
import需要的包。Random在scala.util中,而probablePrime是BigInt中的方法。
1 2 3 4 5
| import scala.math.BigInt._ import scala.util.Random probablePrime(100,Random) res15: scala.math.BigInt = 1137139793510393954801305013479
|
1.8
创建随机文件的方式之一是生成一个随机的BigInt,然后将它转换成三十六进制,输出类似”qsnvbevtomcj38o06kul”这样的字符串。查阅Scaladoc,找到在Scala中实现该逻辑的办法。
答:
1 2
| scala> scala.math.BigInt(scala.util.Random.nextInt).toString(36) res19: String = -wda3r0
|
1.9
在Scala中如何获取字符串的首字符和尾字符?
答:
1 2 3 4 5 6 7 8 9 10 11
| scala> "Hello"(0) res20: Char = H scala> "Hello".take(1) res21: String = H scala> "Hello".reverse(0) res22: Char = o scala> "Hello".takeRight(1) res23: String = o
|
1.10
take,drop,takeRight和dropRight这些字符串函数是做什么用的?和substring相比,他们的优点和缺点都是哪些?
答:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| scala> "Hello world".take(3) res26: String = Hel scala> "Hello world".takeRight(3) res27: String = rld scala> "Hello world".drop(3) res28: String = lo world scala> "Hello world".dropRight(3) res29: String = Hello wo scala> "Hello world".take(3).drop(1) res32: String = el
|
take,drop,takeRight,dropRight适合从两边处理字符串,很方便可以配合使用,substring适合处理中间的字符串。
参考:
《快学Scala》:http://book.douban.com/subject/19971952/
(转载本站文章请注明作者和出处 Vernon Zheng(郑雪峰) – vernonzheng.com ,请勿用于任何商业用途)