// In file next-steps/Ex1.scala val big = new java.math.BigInteger("12345")
// In file next-steps/Ex1.scala val greetStrings = new Array[String](3) greetStrings(0) = "Hello" greetStrings(1) = ", " greetStrings(2) = "world!\n" for (i <- 0 to 2) print(greetStrings(i))
// In file next-steps/Ex2.scala val greetStrings: Array[String] = new Array[String](3)
// In file next-steps/Ex2.scala greetStrings(0) = "Hello" greetStrings(1) = ", " greetStrings(2) = "world!\n"
// In file next-steps/Ex2.scala for (i <- 0 to 2) print(greetStrings(i))
greetStrings(0) = "Hello"
greetStrings.update(0, "Hello")
// In file next-steps/Ex3.scala val greetStrings = new Array[String](3) greetStrings.update(0, "Hello") greetStrings.update(1, ", ") greetStrings.update(2, "world!\n") for (i <- 0.to(2)) print(greetStrings.apply(i))
// In file next-steps/Ex3.scala val numNames = Array("zero", "one", "two")
// In file next-steps/Ex3.scala val numNames2 = Array.apply("zero", "one", "two")
// In file next-steps/Ex3.scala val oneTwoThree = List(1, 2, 3)
// In file next-steps/Ex3.scala val oneTwo = List(1, 2) val threeFour = List(3, 4) val oneTwoThreeFour = oneTwo ::: threeFour println(oneTwo +" and "+ threeFour +" were not mutated.") println("Thus, "+ oneTwoThreeFour +" is a new list.")
List(1, 2) and List(3, 4) were not mutated. Thus, List(1, 2, 3, 4) is a new list.
// In file next-steps/Ex3.scala val twoThree = List(2, 3) val oneTwoThree = 1 :: twoThree println(oneTwoThree)
List(1, 2, 3)
// In file next-steps/Ex3.scala val oneTwoThree = 1 :: 2 :: 3 :: Nil println(oneTwoThree)
// In file next-steps/Ex3.scala val pair = (99, "Luftballons") println(pair._1) println(pair._2)
99 Luftballons
// In file next-steps/Ex3.scala var jetSet = Set("Boeing", "Airbus") jetSet += "Lear" println(jetSet.contains("Cessna"))
// In file next-steps/Ex3.scala jetSet = jetSet + "Lear"
// In file next-steps/Ex3.scala import scala.collection.mutable.Set val movieSet = Set("Hitch", "Poltergeist") movieSet += "Shrek" println(movieSet)
// In file next-steps/Ex3.scala import scala.collection.immutable.HashSet val hashSet = HashSet("Tomatoes", "Chilies") println(hashSet + "Coriander")
// In file next-steps/Ex3.scala import scala.collection.mutable.Map val treasureMap = Map[Int, String]() treasureMap += (1 -> "Go to island.") treasureMap += (2 -> "Find big X on ground.") treasureMap += (3 -> "Dig.") println(treasureMap(2))
Find big X on ground.
// In file next-steps/Ex3.scala val romanNumeral = Map( 1 -> "I", 2 -> "II", 3 -> "III", 4 -> "IV", 5 -> "V" ) println(romanNumeral(4))
// In file next-steps/Ex3.scala def printArgs(args: Array[String]): Unit = { var i = 0 while (i < args.length) { println(args(i)) i += 1 } }
// In file next-steps/Ex3.scala def printArgs(args: Array[String]): Unit = { for (arg <- args) println(arg) }
// In file next-steps/Ex3.scala def printArgs(args: Array[String]): Unit = { args.foreach(println) }
// In file next-steps/Ex3.scala def formatArgs(args: Array[String]) = args.mkString("\n")
// In file next-steps/Ex3.scala println(formatArgs(args))
// In file next-steps/Ex3.scala val res = formatArgs(Array("zero", "one", "two")) assert(res == "zero\none\ntwo")
// In file next-steps/countchars1.scala import scala.io.Source if (args.length > 0) { for (line <- Source.fromFile(args(0)).getLines()) println(line.length +" "+ line) } else Console.err.println("Please enter filename")
$ scala countchars1.scala countchars1.scala
22 import scala.io.Source 0 22 if (args.length > 0) { 0 51 for (line <- Source.fromFile(args(0)).getLines()) 35 println(line.length +" "+ line) 1 } 4 else 46 Console.err.println("Please enter filename")
22 | import scala.io.Source 0 | 22 | if (args.length > 0) { 0 | 51 | for (line <- Source.fromFile(args(0)).getLines()) 35 | println(line.length +" "+ line) 1 | } 4 | else 46 | Console.err.println("Please enter filename")
// In file next-steps/Ex5.scala val lines = Source.fromFile(args(0)).getLines().toList
// In file next-steps/Ex5.scala def widthOfLength(s: String) = s.length.toString.length
// In file next-steps/Ex4.scala var maxWidth = 0 for (line <- lines) maxWidth = maxWidth.max(widthOfLength(line))
// In file next-steps/Ex5.scala val longestLine = lines.reduceLeft( (a, b) => if (a.length > b.length) a else b )
// In file next-steps/Ex5.scala val maxWidth = widthOfLength(longestLine)
// In file next-steps/Ex5.scala for (line <- lines) { val numSpaces = maxWidth - widthOfLength(line) val padding = " " * numSpaces println(padding + line.length +" | "+ line) }
// In file next-steps/Ex6.scala import scala.io.Source def widthOfLength(s: String) = s.length.toString.length if (args.length > 0) { val lines = Source.fromFile(args(0)).getLines().toList val longestLine = lines.reduceLeft( (a, b) => if (a.length > b.length) a else b ) val maxWidth = widthOfLength(longestLine) for (line <- lines) { val numSpaces = maxWidth - widthOfLength(line) val padding = " " * numSpaces println(padding + line.length +" | "+ line) } } else Console.err.println("Please enter filename")
For more information about Programming in Scala, Second Edition (the "Stairway Book"), please visit: http://www.artima.com/shop/programming_in_scala_2ed and: |
Copyright © 2007-2010 Artima, Inc. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. |