13 July 2013

Scala for the Impatient》,书如其书名,是给想快速了解Scala语言的人写的。 当然,也不是没有门槛,至少是对Java/C++比较了解。书中假定你已掌握以上语言的一定基 础,并多处与Scala进行了对比。

此书作者还免费提供了A1级别的全部9章电子版内容, 在TypeSafe网站可以下到PDF版(英文)。 不得不说真慷慨!赞!

在看书之余,将习题也做了一遍,记录下来。

  1. 在REPL模式下输入 3. 然后按回车 ENTER显示如下:

     scala> 3.
     !=             ##             %              &              *              
     +              -              /              <              <<             
     <=             ==             >              >=             >>             
     >>>            ^              asInstanceOf   equals         getClass       
     hashCode       isInstanceOf   toByte         toChar         toDouble       
     toFloat        toInt          toLong         toShort        toString       
     unary_+        unary_-        unary_~        |              
    
  2. 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
    
  3. res 在REPL中是val。像下面这样赋值会得到错误。

     scala> res2
     res9: Double = 1.7320508075688772
     scala> res2 = 1
     <console>:8: error: reassignment to val
            res2 = 1
                 ^
    
  4. Scala中字符串的包装类是StringOps,乘号*是它的运算符重载的方法

     scala> "crazy" * 3
     res10: String = crazycrazycrazy
    

    Scaladoc中查找StringOps结果见图1-1右侧

    在Scaladoc搜StringOps <div align="center">图1-1</div>

  5. 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
    
  6. BigInt如下计算即可.

     scala> BigInt(2).pow(1024)
     res19: scala.math.BigInt = 17976931348623159077293051907890247336179
     76978942306572734300811577326758055009631327084773224075360211201138
     79871393357658789768814416622492847430639474124377767893424865485276
     30221960124609411945308295208500576883815068234246288147391311054082
     7237163350510684586298239947245938479716304835356329624224137216
    
  7. 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
    
  8. 只需要调用BigInt.toString即可(为了避免出现负数,使用了abs)

     scala> BigInt(util.Random.nextLong).abs.toString(36)
     res63: String = 1qaspwgj5qqlf
    
  9. 查询Scaladoc的StringOps可知,分别是headlast方法。
  10. takedrop分别是从左边取得和去掉几个字符。takeRightdropRight差不 多的功 能,只是从右边开始数。substring可以指定从左起的下标,用来截取字符串的中间 部分很有用。他们用来截取前后字符串很方便,但是截取中间字符就不太合适,即使可以 联合使用。

    scala> "jmu is using Scala".take(5).drop(1)
    res82: String = mu i ----
    
use Scala 2.9.1


blog comments powered by Disqus