成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Scala的從構造器:主構造器之外的構造器

開發 后端
本文節選自Martin Odersky,Lex Spoon和Bill Venners所著,Regular翻譯的《Programming in Scala》的第六章。Scala是一種針對 JVM 將函數和面向對象技術組合在一起的編程語言。

有些時候一個類里需要多個構造器。Scala里主構造器之外的構造器被稱為從構造器:auxiliary constructor。比方說,分母為1的分數只寫分子的話就更為簡潔。如,對于5/1 來說,可以只是寫成5。因此,如果不是寫成Rational(5, 1),客戶程序員簡單地寫成Rational(5)或許會更好看一些。這就需要給Rational添加一個只帶一個參數,分子的從構造器并預先設定分母為1。代碼6.2展示了應該有的樣子。

51CTO編輯推薦:Scala編程語言專題

  1. class Rational(n: Int, d: Int) {  
  2.  require(d != 0)  
  3.  val numer: Int = n  
  4.  val denom: Int = d  
  5.  def this(n: Int) = this(n, 1)  
  6.  override def toString = numer+"/"+denom  
  7.  def add(that: Rational): Rational =  
  8.   new Rational(  
  9.    numer * that.denom + that.numer * denom,  
  10.    denom * that.denom  
  11.   )  
  12. }  
代碼 6.2 帶有從構造器的Rational

Scala的從構造器開始于def this(...)。Rational的從構造器主體幾乎完全是調用主構造器,直接傳遞了它的唯一的參數,n,作為分子和1作為分母。輸入下列代碼到解釋器里可以實際看到從構造器的效果:

  1. scala> val y = new Rational(3)  
  2. y: Rational = 3/1 
Scala里的每一個從構造器的第一個動作都是調用同一個類里面其他的構造器。換句話說就是,每個Scala類里的每個從構造器都是以“this(...)”形式開頭的。被調用的構造器既可以是主構造器(好像Rational這個例子),也可以是從文本上來看早于調用構造器的其它從構造器。這個規則的根本結果就是每一個Scala的構造器調用終將結束于對類的主構造器的調用。因此主構造器是類的唯一入口點。

注意

若你熟悉Java,你或許會奇怪為什么Scala構造器的規矩比Java的還要大。Java里,構造器的第一個動作必須要么調用同類里的另一個構造器,要么直接調用超類的構造器。Scala的類里面,只有主構造器可以調用超類的構造器。Scala里更嚴格的限制實際上是權衡了更高的簡潔度和與Java構造器相比的簡易性所付出的代價之后作出的設計。

【相關閱讀】

  1. 在Scala中檢查先決條件、添加字段和自指向
  2. Scala Rational對象的toString方法
  3. 學習Scala中的Rational類:分數的模型化
  4. Scala中的富包裝器:富操作和富類列表
  5. Scala操作符的優先級和關聯性

責任編輯:book05 來源: Artima
相關推薦

2012-05-16 13:45:24

Java構造器

2009-07-17 17:41:41

SwingWorker

2011-05-16 10:35:02

jQuery

2019-10-22 08:45:07

Java構造器編程語言

2009-07-22 08:45:35

Scala超類構造器override修飾符

2009-10-12 13:32:58

VB.NET線程構造器

2012-02-27 14:09:00

Java

2022-04-15 08:30:00

Lombok@Builde構建器

2010-01-18 10:28:15

C++編譯器

2009-12-17 10:18:17

Ruby創建構造器

2013-05-06 09:59:48

2009-12-11 10:42:00

Scala講座類定義構造函數

2025-02-06 13:23:09

C++函數參數

2016-09-02 09:14:26

2019-09-02 08:39:02

路由器RAM內存

2009-08-27 10:06:15

Scala的構造方法

2009-09-02 17:24:39

C#構造POP3服務器

2009-11-02 16:30:29

VB.NET構造器

2021-06-27 21:06:47

開發循環依賴

2021-08-19 09:59:07

Spring代碼Java
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本a v在线播放 | japan25hdxxxx日本 做a的各种视频 | 99精品国产一区二区三区 | 91福利网| 免费能直接在线观看黄的视频 | 91精品国产91久久久久游泳池 | 中文字幕日韩欧美 | 日韩精品成人免费观看视频 | 99在线观看视频 | 黄色在线观看网址 | 乱码av午夜噜噜噜噜动漫 | 日韩一区二区三区视频 | 91偷拍精品一区二区三区 | 久久尤物免费一区二区三区 | 成人一区二 | 九九九色 | 女人夜夜春 | av在线影院 | 国产日韩视频在线 | 2018中文字幕第一页 | 曰韩一二三区 | 九色 在线| 91视视频在线观看入口直接观看 | 日韩久草| 夜夜摸夜夜操 | 国产成人精品亚洲日本在线观看 | 久草网站| 日日碰狠狠躁久久躁96avv | 成人在线播放网址 | 久久精品国产一区二区电影 | 美女久久| 黑人一级黄色大片 | 黄色小视频大全 | 一区二区久久 | 国产伦一区二区三区四区 | 日韩精品激情 | 精品国产欧美在线 | 欧美中文字幕一区二区三区亚洲 | 日韩中文一区二区三区 | 亚洲欧洲综合av | 亚洲精品一区二区三区中文字幕 |