124 |
124 |
125 /* in Java |
125 /* in Java |
126 val lyrics = "Sun dips down, the day has gone. \n" + |
126 val lyrics = "Sun dips down, the day has gone. \n" + |
127 "Witches, wolves and giants yawn. \n" + |
127 "Witches, wolves and giants yawn. \n" + |
128 "Queen and dragon, troll and gnome: \n" + |
128 "Queen and dragon, troll and gnome: \n" + |
129 "tired buddies head for home" |
129 "tired buddies head for home." |
130 */ |
130 */ |
131 |
131 |
132 val lyrics = """Sun dips down, the day has gone. |
132 val lyrics = """Sun dips down, the day has gone. |
133 |Witches, wolves and giants yawn. |
133 |Witches, wolves and giants yawn. |
134 |Queen and dragon, troll and gnome: |
134 |Queen and dragon, troll and gnome: |
135 |tired buddies head for home""".stripMargin |
135 |tired buddies head for home.""".stripMargin |
136 |
136 |
137 println(lyrics) |
137 println(lyrics) |
138 |
138 |
139 |
139 |
140 // Pairs/Tuples |
140 // Pairs/Tuples |
250 for (n <- (1 to 10).toList; |
253 for (n <- (1 to 10).toList; |
251 m <- (1 to 10).toList) yield m * n |
254 m <- (1 to 10).toList) yield m * n |
252 |
255 |
253 mult_table.sliding(10,10).mkString("\n") |
256 mult_table.sliding(10,10).mkString("\n") |
254 |
257 |
|
258 // the list can also be constructed in any other way |
|
259 for (n <- List(10,12,4,5,7,8,10)) yield n * n |
|
260 |
255 |
261 |
256 // with if-predicates |
262 // with if-predicates |
257 |
263 |
258 for (n <- (1 to 3).toList; |
264 for (n <- (1 to 3).toList; |
259 m <- (1 to 3).toList; |
265 m <- (1 to 3).toList; |
268 for ((m, n) <- List((1, 4), (2, 3), (3, 2), (4, 1))) yield m + n |
274 for ((m, n) <- List((1, 4), (2, 3), (3, 2), (4, 1))) yield m + n |
269 |
275 |
270 for (p <- List((1, 4), (2, 3), (3, 2), (4, 1))) yield p._1 + p._2 |
276 for (p <- List((1, 4), (2, 3), (3, 2), (4, 1))) yield p._1 + p._2 |
271 |
277 |
272 |
278 |
|
279 // general pattern |
|
280 |
|
281 for (x <- ...) yield { |
|
282 // potentially complicated |
|
283 // calculation of a result |
|
284 } |
|
285 |
|
286 |
273 |
287 |
274 // with only a side-effect (no list is produced), |
288 // with only a side-effect (no list is produced), |
275 // has no "yield" |
289 // has no "yield" |
276 |
290 |
277 for (n <- (1 to 10)) println(n) |
291 for (n <- (1 to 10)) println(n) |
278 |
|
279 |
|
280 |
|
281 |
292 |
282 |
293 |
283 |
294 |
284 // concurrency (ONLY WORKS IN SCALA 2.11.8, not in SCALA 2.12) |
295 // concurrency (ONLY WORKS IN SCALA 2.11.8, not in SCALA 2.12) |
285 // (would need to have this wrapped into a function, or |
296 // (would need to have this wrapped into a function, or |
301 time_needed(10, for (n <- list) yield n + 42) |
312 time_needed(10, for (n <- list) yield n + 42) |
302 time_needed(10, for (n <- list.par) yield n + 42) |
313 time_needed(10, for (n <- list.par) yield n + 42) |
303 |
314 |
304 |
315 |
305 // mutable vs immutable factorial |
316 // mutable vs immutable factorial |
306 def fact_mu(n: Long): Long = { |
317 def fact_mu(n: Long) : Long = { |
307 var result : Long = 1 |
318 var result : Long = 1 |
308 var i = 1 |
319 var i = 1 |
309 while (i <= n) { |
320 while (i <= n) { |
310 result = result * i |
321 result = result * i |
311 i = i + 1 |
322 i = i + 1 |
531 plan.par.map(i(_)).reduce(_ + _) |
542 plan.par.map(i(_)).reduce(_ + _) |
532 |
543 |
533 santa_state("(((((()))))".toList) |
544 santa_state("(((((()))))".toList) |
534 santa_imutable("(((((()))))".toList) |
545 santa_imutable("(((((()))))".toList) |
535 |
546 |
536 def randomString(length: Int) = |
547 def randomString(length: Int) : String = |
537 List.fill(length)((40 + scala.util.Random.nextInt(2)).toChar) |
548 List.fill(length)((40 + scala.util.Random.nextInt(2)).toChar) |
538 |
549 |
539 |
550 |
540 santa_state(randomString(100)) |
551 santa_state(randomString(100)) |
541 |
552 |