Christopher Barber
Wed, 11 Oct 2006 07:23:26 -0700
JamesWang wrote:
Hello Does Curl support method or procedure override? I can define two procedures with the same name in Curl.Does it mean Curl does not support that?
I am not sure what you mean. Curl does not allow two things to use the same name within the same package or class (with only a few exceptions for class members: getters & setters, primary & secondary constructors, and factories). Curl does not support what C++/Java calls "overloading": defining multiple methods or functions with the same name but taking different arguments. Curl does support what is usually called "overriding", which is the ability to override a superclass's method implementation in a subclass, as in:
{define-class Parent
{method {foo}:void
{do-something}
}
}
{define-class Child {inherits Parent}
{method {foo}:void
{do-something-different}
}
}
When the 'foo' method is invoked on Child instances, its own version
will be used instead of that of Parent.
It is possible to mimic the behavior of overloading by defining a macro which examines its arguments and determines which implementation to dispatch to, but it is usually not worth the trouble.
- Christopher