Io_Language

 Object ancestor := method (
     prototype := self proto
     if (prototype != Obejct,
         writeln ("Slots of ",
                  prototype type,
                  "
------------------"
         )
         prototype slotNames foreach (slotName,
                                      writeln (slotName)
         )
         writeln prototype ancestors
     )
 )
 unless := method (
     (
             call sender doMessage (
                     call message argAt(0)
             )
     )
     ifFalse (
             call sender doMessage (
                     call message argAt(1)
             )
     )
     ifTrue (
             call sender doMessage (
                     call message argAt(2)
             )
     )
 )

 Animals.io

    Object ancestors := method (
        prototype := self proto
        if (prototype != Object,
            writeln ("Slots of ", 
                prototype type,
                "
----------------"
            )
            prototype slotNames foreach (
                slotName, 
                writeln (sloteName)
            )
            writeln prototype ancestors
        )
    )
    
    Animal := Object clone
    Animal speak := method (
        "ambiguous animal noise" println
    )
    Duck := Animal clone
    Duck speak := method (
        "quack" println
    )
    Duck walk := method (
        "waddle" println
    )
    disco := Duck clone
    disco ancestors
            

 

原文地址:https://www.cnblogs.com/thoupin/p/3691445.html