[关闭]
@student2018 2018-10-13T07:45:06.000000Z 字数 1333 阅读 862

快学scala学习练习题摘记

-

Scala

1.提供操作符用于构造HTML表格,例如
Table() | "java" | "scala" || "Gosling" | "Ordersky" ||"jvm" | "dot Net"
应该产出 同

  1. <table>
  2. <tr><td>java</td><td>scala</td></tr>
  3. <tr><td>Gosling</td><td>Ordersky</td></tr>
  4. <tr><td>jvm</td><td>dot net</td></tr>
  5. </table>
  1. 一行代码完成一个字符串中字母出现的次数,如字符串"hello world"
  2. 编写一个函数,给定字符串,产出一个包含所有字符下标的映射,
    例如 indexes("Mississippi")应返回一个映射,M 对应{0} i对应 {1,4,7,10}
  1. //Table() | "java" | "scala" || "Gosling" | "Ordersky" ||"jvm" | "dot Net"
  2. class Table {
  3. private var sb = new StringBuilder("<table><tr>")
  4. final val TR_END = "</tr>"
  5. final val TR_START = "<tr>"
  6. final val TB_END = "</table>"
  7. def |(col: String) = {
  8. sb.append("<td>")
  9. sb.append(col)
  10. sb.append("</td>")
  11. this
  12. }
  13. def ||(row: String) = {
  14. sb.append(TR_END)
  15. sb.append(TR_START)
  16. |(row)
  17. }
  18. def print = println(sb.toString() + TR_END + TB_END)
  19. }
  20. object Table extends App {
  21. def apply() = new Table()
  22. // Table() | "java" | "scala" || "Gosling" | "Ordersky" || "jvm" | "dot Net" print
  23. //一行代码完成一个字符串中字母出现的次数
  24. val str = "hello world"
  25. println(str.aggregate(Set[Char]())(_ + _, _ ++ _))
  26. println(str.foldLeft(Map[Char, Int]())((m, c) => m + (c -> (m.getOrElse(c, 0) + 1))))
  27. def numsFrom(n: Int): Stream[Int] = n #:: numsFrom(n + 1)
  28. val tenMore = numsFrom(10)
  29. tenMore.take(5).foreach(println)
  30. import math._
  31. val powers = (0 until 1000).view.map(pow(10, _))
  32. println(powers(3))
  33. def indexes(str: String) = {
  34. str.zipWithIndex.foldLeft(Map[Char, List[Int]]()) {
  35. (m, ci) =>
  36. m + (ci._1 -> (m.getOrElse(ci._1, List[Int]()):::List(ci._2)))
  37. }
  38. }
  39. println(indexes("Mississippi"))
  40. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注