Jonathan M Davis wrote:
The simplest solution would be to simply have the function
callable as a non-
property function when there's such an ambiguity, but that does
go against the whole "require a property function to be used as
a property" thing. Your suggested syntax is pretty good, but
it's not exactly a desirable solution either. I don't know.
Given the simplicity of it and the fact that there's no way
that you're going to change the property function to a member
variable (since it's not like you can add it to arrays),
allowing for it to be called as normal function seems like the
better solution, albeit not exactly ideal. Free functions
definitely complicate the whole property thing.
- Jonathan M Davis
Honestly I'm kind of a fan of having any method with zero or one
parameters being usable as properties or methods at the
programmer's discretion. Then conflicting pseudo methods could
just be resolved through normal method semantics as you
described. But I understand this is being removed so there must
be a reason for it.
To bad the comma was used as new-line or we could remove the
zero-or-one requirement all together and have Go-like return
semantics:
void foo(string a, int b, float c) { ... }
float, float up() {
return 0f, 1f;
}
void main() {
foo = "bar", 1, 2.0f;
float x, y = up;
}
Of course, changing the language around like that is obviously
not a realistic option. So this is just pointless speculation.