3 ms·
Seems like Io's "forward" is a lot like "did-not-understand" (and similar mechanisms in Ruby/etc. languages), but it takes priority over messages that would've
by draegtun 16y ago
Seems like Io's "forward" is a lot like "did-not-understand" (and similar mechanisms in Ruby/etc. languages), but it takes priority over messages that would've otherwise been understood.
Yes its same as did-not-understand/method_missing/__getattr__/AUTOLOAD but no it doesn't take priority over other defined messages.
For eg, If I change the first line in my code above to:
Builder := Object do (
foo := method (arg, write (arg))
)
And do:
Builder do (
h1 (
foo ("Foo here!")
p ("paragraph")
)
)
I get a untagged "Foo Here!":
<h1>Foo here!<p>paragraph</p></h1>
- vito 16y agoAh, ok - I misinterpreted the article. Actually, the article seems to be wrong? It seems to imply that this shouldn't work: Io> x := Object clone do( forward := 0; a := 1 ) ==> Object_0x1003a2e90: a = 1 forward = 0 Io> x a ==> 1 Io> x b ==> 0 Io> x b := 2 ==> 2 Io> x b ==> 2 (paragraph: There are some things you should know about forward(). It's very powerful. Too powerful. [...])
- draegtun 16y agoNot sure what the article is referring to there? As far as I know you would have to amend the objects protos or overwrite the setSlot message (which := is an alias for) to change this behaviour. The documentation clearly states for forward that: If an object doesn't respond to a message, it will invoke its "forward" method if it has one.