Io语言创建类

问题描述 投票:0回答:2

如何用 Io 语言创建“类”?

例如,我想尝试以下操作:

Dog pd

barry := Dog new("Barry")
    
barry pd 

barry name println                // Attribute of the class 
barry allFoodItemsEaten println   // Attribute of the class 
     

lisa := Dog new("Lisa")

barry feed(12)                    // A Method
   

lisa feedSummary                 // A Method         

我知道 Io 中没有类,但我想实现一个。 关于如何实施有什么建议吗?

iolanguage
2个回答
1
投票

我知道 Io 中没有类,但我想实现一个。

这就是你的问题。您无法创建类,只能克隆现有对象。对于您的情况,一种解决方案可能是

Dog := Object clone  // Create a Dog object
Dog name := nil  // Abstract name attribute

您可以通过进一步克隆来创建该“类”的“实例”

barry := Dog clone
barry name = "barry"


0
投票

您可以使用 Dog 上的方法来模拟该行为:

Dog := Object clone do(
    init := method(
       // init attributes here, e.g.
       self name := ""
    )
    new := method(name,
        result := self clone
        // init constructor values here
        result name = name
        result
    )
)
barry := Dog new("Barry")
barry name println // will print Barry
© www.soinside.com 2019 - 2024. All rights reserved.