Page 38 (PDF page 80):
Discussion of arrays should describe how to create/use multidimensional
arrays in Scala.
|
Page 42 (PDF page 86):
location 968 of 16616
Chapter 3 Step8
Scala's LIst, scala.List, differs from Java's java.util.List...
My feedback: No scala.List there but scala.collection.immutable.List
right?
|
Page 43 (PDF page 87):
Description of Why not append to lists is inaccurate. Please see the
following.
Your options if you want to build a list efficiently by appending
elements is to prepend them, then when you're done call reverse.
Example - Append 4 to List(1,2,3) is expected to be List(1,2,3,4).
In Scala interpretor, you get List(3,2,1,4) which is not expected.
scala> val l1 = List(1,2,3)
l1: List[Int] = List(1, 2, 3)
scala> (4 :: l1).reverse
res17: List[Int] = List(3, 2, 1, 4)
|
Page 45 (PDF page 89):
Deprecation warnings for some examples:
scala> val thrill = "Will" :: "fill" :: "until" :: Nil
thrill: List[java.lang.String] = List(Will, fill, until)
scala> thrill.remove(s => s.length == 4)
warning: there were deprecation warnings; re-run with -deprecation for
details
res13: List[java.lang.String] = List(until)
scala> thrill.sort((s, t) => s.charAt(0).toLower < t.charAt(0).toLower)
warning: there were deprecation warnings; re-run with -deprecation for
details
res14: List[java.lang.String] = List(fill, until, Will)
|
Page 45 (PDF page 89):
With Scala 2.11.7, this example:
thrill.sort((s, t) => s.charAt(0).toLower < t.charAt(0).toLower)
now not only is deprecated (as stated by an existing note), but fails:
scala> thrill.sort((s, t) => s.charAt(0).toLower < t.charAt(0).toLower)
<console>:12: error: value sort is not a member of List[String]
thrill.sort((s, t) => s.charAt(0).toLower < t.charAt(0).toLower)
Instead, use sortWith:
scala> thrill.sortWith((s, t) => s.charAt(0).toLower <
t.charAt(0).toLower)
res39: List[String] = List(fill, until, Will)
|
Page 46 (PDF page 90):
"... but unlike lists, tuples can contain different types of elements".
List(4, "5", 6.0)
compiles well, containing an Int, String and Double.
|
Page 46 (PDF page 90):
It is written:
Scala infers the type of the tuple to be Tuple2[Int, String]
However, in Scala 2.11.6 REPL, the code
scala> val pair = (99, "luft") //gives
pair: (Int, String) = (99,luft)
Thus, no mention of type as given in book to be
Tuple2[Int, String]
|
Page 48 (PDF page 92):
"As this example shows, you can create sets in Scala similarly to how you
create lists and arrays"
Should it be 'similar' instead of 'similarly' ?
|
Page 48 (PDF page 92):
In the second paragraph:
"Both mutable and immutable sets offer a + method, but their behavior
differs."
This is not true, the + methods of both kinds of sets do exactly the same
thing.
|
Page 48 (PDF page 92):
"Both mutable and immutable sets offer a + method, but their behavior
differs. Whereas a mutable set will add the element to itself, an
immutable
set will create and return a new set with the element added."
This statement is incorrect, + semantics does not change. Example below:
import scala.collection.mutable.Set
val first = Set("A", "B")
val second = first + "C"
println(first)
println(second)
"first" set is not altered.
|
Page 83 (PDF page 97):
location 1238 of16616 : Amazon eBook
def formatArgs(arg: Array[String]) = args.mkString("\n")
...
Thus if args contains three elements "zero", "one" and "two", formatArgs
will return "zero\one\two".
My feedback:
#1
from: def formatArgs(arg: Array[String]) = args.mkString("\n")
to: def formatArgs(arg: Array[String]) = args.mkString("\\")
or
#2
from: formatArgs will return "zero\one\two".
to: formatArgs will return
zero
one
two
EndOfMyFeedback
|
Page 56 (PDF page 100):
Source.fromPath should be Source.fromFile
[FIXED]
|
Page 56 (PDF page 100):
"The getLines method returns an Iterator[String], which provides one line
on each iteration, including the end-of-line character."
The end-of-line character is not included, according to the API
documentation of Source.getLines().
[FIXED]
|
Page 56 (PDF page 100):
$ scala -version
Scala code runner version 2.8.0.final -- Copyright 2002-2010, LAMP/EPFL
$ cat countchars1.scala
import scala.io.Source
if (args.length > 0) {
for (line <- Source.fromPath(args(0)).getLines())
println(line.length +" "+ line)
}
else
Console.err.println("Please enter filename")
$ scala countchars1.scala countchars1.scala
/Users/binil/temp/countchars1.scala:5: error: value fromPath is not a
member of object scala.io.Source
for (line <- Source.fromPath(args(0)).getLines())
^
one error found
$
[FIXED]
|
|
|
|