CodeMan

Each of us must find a way to love the world. You have found yours.

0%

scala for impatient chapter 1

1.在Scala REPL中键入3, 然后按Tab键。有哪些方法可以被应用?

1
2
3



2.在scala REPL中,计算3的平方根,然后再对该值求平方。现在,这个结果与3相关多少?(提示:res变量是你的朋友)

1
2
3
4
5
6
7
8
9
10
11
12
scala> import scala.math._
import scala.math._

scala> math.sqrt(3)
res11: Double = 1.7320508075688772

scala> res11 * res11
res12: Double = 2.9999999999999996

scala> 3 - res12
res13: Double = 4.440892098500626E-16

3.res变量是val还是var?

res是val因为:

1
2
3
4
scala> res12 = 134
<console>:15: error: reassignment to val
res12 = 134
^

4.Scala允许你用数字去乘字符串--去REPL中试一下”crazy” * 3. 这个操作做什么?在Scaladoc中如何找到这个操作?

1
2
3
scala> "crazy" * 3
res14: String = crazycrazycrazy

此操作会使用”crazy”重复三次,生成字符串。
此操作属于String的运算符操作,在Scaladoc的StringOps类中可以找到这个操作的详细说明
文档在此处

1
2
3
4
5
6

def *(n: Int): String
Return the current string concatenated n times.
Definition Classes
[StringLike](http://www.scala-lang.org/api/2.11.8/index.html#scala.collection.immutable.StringLike)

5.10 max 2 的含义是什么? max方法定义在哪个类中?

10与2比较,返回较大的数

max方法定义在Int类中文档

6.用BigInt计算2的1024次方

1
2
3
4
5
6
scala> val x: BigInt = 2
x: scala.math.BigInt = 2

scala> x.pow(1024)
res19: scala.math.BigInt = 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216

7.为了在使用probablePrime(100,Random)获取随机数时不在probablePrime和Radom之前使用任何限定符,你需要引入什么?

1
2
3
4
5
6
7
8
9
scala> import scala.util._
import scala.util._

scala> import scala.math.BigInt._
import scala.math.BigInt._

scala> probablePrime(100,Random)
res27: scala.math.BigInt = 831336893134383164693951229437

8.创建随机文件的方式之一是生成一个随机的BigInt,然后将它转换成三十六进制,输出类似“qsnvbevtomcj38o06ul”这样的字符串。查阅Scaladoc,找到在Scala中实现该逻辑的办法。

9.在Scala中如何获取字符串的首字符和尾字符?

1
2
3
4
5
scala> "get first element".head
res32: Char = g

scala> "get first element".take(1)
res33: String = g

10.tak、drop、takeRight和dropRight这些字符串函数是做什么用的? 和substring相比,它们的优缺点都有哪些?

1
2
3
4
5
6
7
8
9
10
11
12
13

scala> "get first element".take(1)
res33: String = g

scala> "drop test".drop(2)
res34: String = op test

scala> "take right".takeRight(2)
res36: String = ht

scala> "drop right".dropRight(2)
res37: String = drop rig