当我不想使用implicits但希望有一个函数将(例如)Int
转换为MyClass
时,这很有用。Scala中python @classmethod或@staticmethod的等价物是什么?
1
A
回答
4
在斯卡拉,object
用于定义静态方法。你所描述听起来像你想的:
class MyClass(n: Int)
object MyClass {
def apply(n: Int) = new MyClass(n)
}
所以,你可以做以下任一:
scala> val a = MyClass.apply(3)
a: MyClass = [email protected]
scala> val b = MyClass(3) // works allowed because method is called "apply"
b: MyClass = [email protected]
我会称之为“工厂法”。
1
你可以把一个方法到配对对象,将其从斯卡拉调用静态的方式(即没有一个对象实例):
// Scala
class A
object A {
def staticMethod = println("Foo!")
}
A.staticMethod // prints "Foo!"
注意,Scala编译器实际上是创建一个名为A$
一种新的合成类对于单身人士object A
,因此行A.staticMethod
在运行时存在的A$
的单个实例上调用该方法。
值得注意的是:Scala编译器还会在A
对字节码级的静态方法staticMethod
转发调用A$.staticMethod
- 在你在你的项目中混合Java和Scala代码的情况下,这意味着你也能然而
// Java
A.staticMethod(); // works
,如果你声明与同伴类A
同名的方法,而一切都在Scala中以同样的方式仍然有效,静态转发方法:从Java调用这个静态方法是这样A
将会生成而不是,您将不能o从Java拨打电话staticMethod
:
// Scala
class A {
def staticMethod = println("I'm doing something else.")
}
object A { // no companion class
def staticMethod = println("Foo!")
}
A.staticMethod // prints "Foo!"
// Java
A.staticMethod(); // won't work
相关问题
- 1. 什么是C++ typeid的Scala等价物?
- 2. 为什么使用classmethod而不是staticmethod?
- 3. python中'gem'的等价物是什么?
- 4. Python中imadjust的等价物是什么?
- 5. python中print_r()的等价物是什么?
- 6. 什么是Python的os.walk的等价物?
- 7. 什么是Python os.pathsep的等价物?
- 8. 什么是Perlbrew的Python等价物?
- 9. 什么是Tomcat的Python等价物?
- 10. 什么是java.util.zip.Inflater的Python等价物?
- 11. REBOL或Red中Python列表[3:7]的等价物是什么?
- 12. 什么是Java Akka中的scala伴随对象的等价物?
- 13. 什么是Perl的ucfirst()或s /// e的Python等价物?
- 14. 什么是Scala 2.8中.Net ArrayList可变类型的等价物?
- 15. 什么是“pythonic”的Ruby等价物?
- 16. 什么是Ruby中的“sys.stdout.write()”等价物?
- 17. 什么是VC7中的strtok_s等价物?
- 18. 什么是Silverlight中的OnRender等价物?
- 19. C#中TreeBidiMap的等价物是什么?
- 20. 什么是C#中的vbNullChar等价物?
- 21. MySQL中'go'的等价物是什么?
- 22. Bash中%%〜nxD的等价物是什么?
- 23. C#中memset的等价物是什么?
- 24. 什么是Java中的“ByRef”等价物?
- 25. Monotouch中的CGPDFDocumentGetCatalog等价物是什么?
- 26. WinRT中SecureString的等价物是什么?
- 27. CoreFoundation中NSHomeDirectory()的等价物是什么?
- 28. C#中bigint的等价物是什么?
- 29. 什么是android中的dataWithContentsOfURL等价物?
- 30. jquery中Ajax.updater的等价物是什么?
你能举一个你想如何使用它们的例子吗? – dhg