2012-07-08 27 views
2

我想讓我的Scala代碼更具可讀性,因此我爲所有參數化類型添加了自定義類型。將同伴對象應用於別名類型

所以我在包對象,爲簡單起見,

type IntSeq = Seq[Int] 

不過,現在我不能同伴對象上做簡單的apply。來自REPL:

scala> IntSeq(1, 2, 3) 
<console>:8: error: not found: value IntSeq 
       IntSeq(1, 2, 3) 
      ^

怎麼辦?

(公正,以確保:我的實際別名對象比Seq[Int]更復雜)

編輯:有一個類似的問題 - Scala type alias including companion object [beginner]

關於這個問題,有兩個答覆,兩者的他們不工作。

其中之一是定義我的自定義對象與apply,但我不知道如何做到這一點在我的情況,再加上它有點冗長。

另 - 寫val IntSeq = Seq產生錯誤

警告:前文所定義的性狀SEQ不是伴侶重視IntSeq。 同伴必須一起定義;你可能希望使用:粘貼模式。

+1

那麼,你有沒有嘗試過使用':paste'來定義它? – Debilski 2012-07-08 01:31:44

+0

我找不到什麼':paste'的意思:(顯然,這與REPL有關,但我希望它能在REPL之外工作,當然 – 2012-07-08 01:32:14

+1

只需鍵入REPL,然後複製並粘貼(或類型)'type'別名和'val'賦值之後,這是一個REPL-only問題,所以它在其他代碼中應該沒有問題。 – Debilski 2012-07-08 01:33:19

回答

5

第二個錯誤僅僅是因爲REPL的操作方式。在REPL中,夥伴必須使用:paste模式一起定義;但是,在包對象中,這不是問題。

所以,另一種方法 - 寫val IntSeq = Seq - 實際上是可行的。