《Programming in Scala 3rd》阅读笔记

Chapter 11 《Scala's Hierarch

2018-06-14  本文已影响2人  liqing151

基本类型的实现机制

底类型

定义自己的值类型(目前还不明白用途)
class Dollars(val amount: Int) extends AnyVal {
  override def toString() = "$" + amount
}
scala>  val money = new Dollars(1000000)
money: Dollars = $1000000
scala>  money.amount
res16:  Int = 1000000

money指向一个该值类的实例,在源码中的类型为Dollar,但是在编译后的Java字节码中直接使用Int


避免类型单一化
def title(text: String, anchor: String, style: String): String =
s"<a id='$anchor'><h1 class='$style'>$text</h1></a>"
scala> title("chap:vcls", "bold", "Value Classes")
res17: String = <a id='bold'><h1 class='Value Classes'>chap:vcls</h1></a>

对每一个领域定义一个类。

class  Anchor(val value: String) extends AnyVal
class  Style(val value: String) extends AnyVal
class  Text(val value: String) extends AnyVal
class  Html(val value: String) extends AnyVal

def title(text: Text, anchor: Anchor, style: Style): Html =new Html(
s"<a id='${anchor.value}'>" + s"<h1 class='${style.value}'>" + text.value + "</h1> </a>")

scala> title(new Anchor("chap:vcls"), new Style("bold"), new Text("Value Classes"))
<console>:18: error: type mismatch;
上一篇 下一篇

猜你喜欢

热点阅读