Scala in Impatient 习题解答1 基础A1
13 July 2013
《Scala for the Impatient》,书如其书名,是给想快速了解Scala语言的人写的。 当然,也不是没有门槛,至少是对Java/C++比较了解。书中假定你已掌握以上语言的一定基 础,并多处与Scala进行了对比。
此书作者还免费提供了A1级别的全部9章电子版内容, 在TypeSafe网站可以下到PDF版(英文)。 不得不说真慷慨!赞!
在看书之余,将习题也做了一遍,记录下来。
-
在REPL模式下输入
3.
然后按回车ENTER
显示如下:scala> 3. != ## % & * + - / < << <= == > >= >> >>> ^ asInstanceOf equals getClass hashCode isInstanceOf toByte toChar toDouble toFloat toInt toLong toShort toString unary_+ unary_- unary_~ |
-
res4
就是答案scala> math.sqrt(3) res2: Double = 1.7320508075688772 scala> math.pow(res2, 2) res3: Double = 2.9999999999999996 scala> 3 - res3 res4: Double = 4.440892098500626E-16
-
res
在REPL中是val
。像下面这样赋值会得到错误。scala> res2 res9: Double = 1.7320508075688772 scala> res2 = 1 <console>:8: error: reassignment to val res2 = 1 ^
-
Scala中字符串的包装类是
StringOps
,乘号*
是它的运算符重载的方法scala> "crazy" * 3 res10: String = crazycrazycrazy
Scaladoc中查找
StringOps
结果见图1-1右侧<div align="center">图1-1</div>
-
10 max 2 相当于调用10.max(2),max方法存在于
RichInt
中。10的类型是Int
,调 用前首先被转换成RichInt
。scala> 10 max 2 res86: Int = 10 scala> 10.max(2) res87: Int = 10
-
BigInt如下计算即可.
scala> BigInt(2).pow(1024) res19: scala.math.BigInt = 17976931348623159077293051907890247336179 76978942306572734300811577326758055009631327084773224075360211201138 79871393357658789768814416622492847430639474124377767893424865485276 30221960124609411945308295208500576883815068234246288147391311054082 7237163350510684586298239947245938479716304835356329624224137216
-
import
引入包scala> import scala.math.BigInt import scala.math.BigInt scala> import scala.util.Random import scala.util.Random scala> BigInt.probablePrime(100, Random) res55: scala.math.BigInt = 1266874521284717122498840798537
-
只需要调用
BigInt.toString
即可(为了避免出现负数,使用了abs
)scala> BigInt(util.Random.nextLong).abs.toString(36) res63: String = 1qaspwgj5qqlf
- 查询Scaladoc的StringOps可知,分别是
head
和last
方法。 -
take
和drop
分别是从左边取得和去掉几个字符。takeRight
和dropRight
差不 多的功 能,只是从右边开始数。substring
可以指定从左起的下标,用来截取字符串的中间 部分很有用。他们用来截取前后字符串很方便,但是截取中间字符就不太合适,即使可以 联合使用。scala> "jmu is using Scala".take(5).drop(1) res82: String = mu i ----
use Scala 2.9.1
blog comments powered by Disqus