Oop 可以在Scala中进行基于原型的编程吗?
有可能在Scala中进行基于原型的编程吗?虽然我同意EasyAngel的观点,但根据您希望如何使用原型机制,您可以使用Scala机制实现类似的目标。例如,您可以定义一个可以混合到更通用类中的特征 在某些方面,这比原型对象生成更强大,因为您可以混合和匹配各种潜在的相关特性。您还可以在目标子类中自定义和扩展它们Oop 可以在Scala中进行基于原型的编程吗?,oop,scala,prototype,Oop,Scala,Prototype,有可能在Scala中进行基于原型的编程吗?虽然我同意EasyAngel的观点,但根据您希望如何使用原型机制,您可以使用Scala机制实现类似的目标。例如,您可以定义一个可以混合到更通用类中的特征 在某些方面,这比原型对象生成更强大,因为您可以混合和匹配各种潜在的相关特性。您还可以在目标子类中自定义和扩展它们 进一步澄清你的问题将使答案更加集中。我不同意Easy Angel。。。Scala对象不需要类(它们仍然都有一个类型…但这是不同的)。它完全可以写 val martin = new {
进一步澄清你的问题将使答案更加集中。我不同意Easy Angel。。。Scala对象不需要类(它们仍然都有一个类型…但这是不同的)。它完全可以写
val martin = new {
val name = "Martin"
val surname = "Ring"
def age = Calendar.getInstance.get(Calendar.YEAR) - 1986
}
此外,由于结构类型,您可以为这些对象编写函数:
def printPerson(person: { def name: String; def age: Int }) =
println("%s (%d)".format(person.name, person.age))
您可以调用printPerson(martin)
,它将打印出martin(25)
所以,如果你真的想要的话,就不需要课程或特质
但是,该语言仍然不支持基于原型的编程,因为它(imho)无法克隆和扩展匿名类型的对象。我想你可以写函数来实现这一点。。。但是它们需要大量使用反射,因此没有本地语言支持。您的问题不清楚。你能更准确地描述一下你的问题吗?若你们想知道Scala是基于原型的语言,比如Io还是JavaScript,那个么答案是否定的。在Scala中,你们有一些类是新对象的蓝图,它们是必需的。因此,没有这样的蓝图,就无法创建对象。在我看来,基于原型的语言的大部分功能来自于缺少类。我认为这个有趣的InfoQ视频与这个主题相关:。我认为(它也可以被称为动态mixin)在这种情况下更合适。我很欣赏这个演示和软件描述。然而,在海事组织,我们两者都需要。理想(抽象)类型化和原型(经验)概括都有助于概念(和表征)经济。一个人的缺席对另一个人的贡献有什么影响?谁是容易的天使?