Last modified 6 years ago
Io
http://www.iolanguage.com
http://www.iolanguage.com/downloads/
(no direct-link single-click installer available)
create a folder "Talker"
create a file "talker.io"
create a file "main.io"
# from command line
cmd> io main.io
# from shell
cmd> io [opens interactive io shell]
io> doFile("Talker.io")
io> john := Talker clone
io> john sayHello
# within file "Talker.io"
// within file "talker"
Talker := Object clone do(
sayHello := method(
writeln("Hello world")
)
)
Talker newSlot("name", "")
Talker newSlot("age", 0)
Talker sayYourName := method(writeln(name))
Talker sayYourAge := method(writeln(age))
Talker sayYourClassName := method(writeln(self type))
Talker sayYourInstanceVarName := method( writeln("LIMITATION: instance var name") )
Talker thisMethodName := method(
writeln(sender thisMessage name)
)
Talker sayHelloAdvanced := method(
write("sayHelloAdvanced: ")
sayHello
)
Talker sayYourClassDefinition := method(self print)
// limited quality, partly binary output
Talker sayYourClassCode := method(
Block asString := method(getSlot("self") code)
self slotNames foreach(i, slotName,
writeln(slotName, " := ", self getSlot(slotName) asString)
)
)
# within main.io
john := Talker clone
john sayHello
john setName("John Doe")
john setAge(19)
john sayYourName
john sayYourAge
john sayYourClassName
john sayYourInstanceVarName
john.thisMethodName
john.sayHelloAdvanced
john sayYourClassDefinition
john sayYourClassCode