2016-02-18 37 views
1

快問改編職系如何在斯卡拉斯卡拉:如何定義值類

這裏定義的值類是典型的例子:

class Wrapper(val underlying: Int) extends AnyVal 

我得到一個錯誤:

/usr/home/User/scala2/scala_lerning/src3/val.scala:1: error: value class may not be a member of another class 
class Wrapper(val underlying: Int) extends AnyVal 
    ^
one error found 

操作系統:FreeBSD 10.2 Scala代碼亞軍版本2.11.7 - 版權2002-2013,LAMP/EPFL

任何人都可以幫忙嗎?

感謝

+1

錯誤消息似乎很明確,值類不能是內部類。 – Marth

+0

對不起,仍然對我開放的問題。我正在編譯這個命令Promt,如:scala value.scala。我應該在上面的例子中應用任何類修飾符嗎? – Pavel

+0

錯誤信息沒有比這更清晰... –

回答

1

看來你在做

class Foo { 
    class Wrapper(val underlying: Int) extends AnyVal 
} 

,你不能。你必須做

class Foo { 
} 
class Wrapper(val underlying: Int) extends AnyVal 
+1

我將代碼放入單個文件並嘗試編譯時出現同樣的錯誤:scala file.scala。 – Pavel

+0

這裏也是scala文檔的例子。它也失敗:特性可打印延伸Any(012):Unit = println(this) } class Wrapper(val underlying:Int)extends AnyVal with Printable val w = new Wrapper(3) w.print )//實際需要實例化Wrapper實例 – Pavel

+1

這是因爲您正在調用'scala file.scala'而不是'scalac file.scala'。顯然'scala'將所有內容都包裝到頂級類中以啓用腳本。 – Reactormonk