@student2018
2018-10-13T07:45:06.000000Z
字数 1333
阅读 862
-
Scala
1.提供操作符用于构造HTML表格,例如
Table() | "java" | "scala" || "Gosling" | "Ordersky" ||"jvm" | "dot Net"
应该产出 同
<table>
<tr><td>java</td><td>scala</td></tr>
<tr><td>Gosling</td><td>Ordersky</td></tr>
<tr><td>jvm</td><td>dot net</td></tr>
</table>
//Table() | "java" | "scala" || "Gosling" | "Ordersky" ||"jvm" | "dot Net"
class Table {
private var sb = new StringBuilder("<table><tr>")
final val TR_END = "</tr>"
final val TR_START = "<tr>"
final val TB_END = "</table>"
def |(col: String) = {
sb.append("<td>")
sb.append(col)
sb.append("</td>")
this
}
def ||(row: String) = {
sb.append(TR_END)
sb.append(TR_START)
|(row)
}
def print = println(sb.toString() + TR_END + TB_END)
}
object Table extends App {
def apply() = new Table()
// Table() | "java" | "scala" || "Gosling" | "Ordersky" || "jvm" | "dot Net" print
//一行代码完成一个字符串中字母出现的次数
val str = "hello world"
println(str.aggregate(Set[Char]())(_ + _, _ ++ _))
println(str.foldLeft(Map[Char, Int]())((m, c) => m + (c -> (m.getOrElse(c, 0) + 1))))
def numsFrom(n: Int): Stream[Int] = n #:: numsFrom(n + 1)
val tenMore = numsFrom(10)
tenMore.take(5).foreach(println)
import math._
val powers = (0 until 1000).view.map(pow(10, _))
println(powers(3))
def indexes(str: String) = {
str.zipWithIndex.foldLeft(Map[Char, List[Int]]()) {
(m, ci) =>
m + (ci._1 -> (m.getOrElse(ci._1, List[Int]()):::List(ci._2)))
}
}
println(indexes("Mississippi"))
}