82
A
回答
151
重載構造函數是不是特別的情況下類:
case class Foo(bar: Int, baz: Int) {
def this(bar: Int) = this(bar, 0)
}
new Foo(1, 2)
new Foo(1)
但是,您可能喜歡也超載在同伴的對象,當你忽略new
這就是所謂的apply
方法。
object Foo {
def apply(bar: Int) = new Foo(bar)
}
Foo(1, 2)
Foo(1)
在Scala 2.8中,通常可以使用命名參數和默認參數來代替重載。
case class Baz(bar: Int, baz: Int = 0)
new Baz(1)
Baz(1)
17
您可以按照常規方式定義重載構造函數,但要調用它,必須使用「new」關鍵字。
scala> case class A(i: Int) { def this(s: String) = this(s.toInt) }
defined class A
scala> A(1)
res0: A = A(1)
scala> A("2")
<console>:8: error: type mismatch;
found : java.lang.String("2")
required: Int
A("2")
^
scala> new A("2")
res2: A = A(2)
+2
這並不完全正確 - 你可以在同伴對象聲明爲正常 – 2010-03-08 12:57:20
相關問題
- 1. 是否可以引用Scala案例類構造函數參數的類型?
- 2. JavaScript的使用案例構造函數
- 3. 重載庫類構造函數
- 4. Scala:調用超類的構造函數
- 5. C#構造函數重載
- 6. C#構造函數重載
- 7. 案例類的構造函數參數給出的元組
- 8. 轉換案例類構造函數的參數在斯卡拉
- 9. Scala數組構造函數?
- 10. 如何重構這些重載的類構造函數? (C#)
- 11. 爲什麼DomainService構造函數重載顯示爲DomainContext構造函數重載?
- 12. 是否有可能在scala中重載構造函數?
- 13. c#構造函數注入和構造函數重載
- 14. 構造函數重載。得到錯誤的解決方案
- 15. 可以子類的構造方法重載超類的構造函數? 「java」
- 16. 如何重載我的案例類構造函數以允許兩種不同的類型?
- 17. Java的重載的構造函數
- 18. 如何在案例類中指定多個構造函數?
- 19. Scala案例類層次結構
- 20. C#重載的構造函數
- 21. 重載的構造函數多次
- 22. 重載基類的構造
- 23. 斯卡拉案例類:爲類型構造函數生成實例嗎?
- 24. 重載通用類的構造函數,基於類型
- 25. Scala:匹配通用函數的案例
- 26. 錯誤構造函數重載模擬
- 27. 常量和重載構造函數
- 28. 在VBScript中重載構造函數
- 29. 構造函數與Kotlin重載
- 30. 它構造函數重載嗎?
很不錯的:)我一直在尋找的東西像斯卡拉後備值,它與2.8新?我不知道:) – Felix 2010-03-10 14:23:39
是的,命名參數和默認參數在Scala 2.8中是新的。 – retronym 2010-03-10 22:17:00
Martin Odersky解釋了爲什麼不會自動添加其他應用方法:http://www.scala-lang.org/node/976 – 2010-04-15 12:56:43