On 2010-12-23 16:36, thaddee yann tyl wrote: > The private names proposal has a lot of good ideas, but their use is > not obvious. > The reasons I see for that are: > The "private a;" declaration: > * changes meaning of all obj.a in scope > * looks like a scoped variable, not a private element of an object > * is not generative-looking > ... which makes it harder to understand, and use.
I agree with these criticisms. > I find that David Herman's proposal fixes those issues: >> But your idea suggests yet another alternative worth adding to our growing >> pantheon. We could allow for the scoping of private names, but always >> require them to be prefixed by the sigil. This way there's no possibility of >> mixing up public and private names. So to use an earlier example from this >> thread (originally suggested to me by Allen): >> >> function Point(x, y) { >> private #x, #y; >> this.#x = x; >> this.#y = y; >> } > > I understand that the number sign gets really heavy and annoying after > some time. As a result, I suggest a simpler syntax, "private > .secret;": > [...] > private .a; > k..a = o; I find this less readable, and I think it would be easy to miss the difference between . and .. in larger expressions. Also, the .. operator is used in other languages for ranges. In any case, let's not bikeshed about this yet. Either .# or @ is fine for discussion. ('.#' is perhaps more suited to being viewed as a variant of '.' with a private field selector, and '@' as an operator distinct from '.') -- David-Sarah Hopwood ⚥ http://davidsarah.livejournal.com
signature.asc
Description: OpenPGP digital signature
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss