> On Mar 28, 2016, at 8:32 PM, Jordan Rose via swift-evolution > <[email protected]> wrote: > > >> On Mar 28, 2016, at 18:20, Matthew Judge <[email protected]> wrote: >> >> There are two different questions that we keep bouncing back and forth >> between. Given: >> >> class Outer { >> private var outerVar: Int >> class Inner { >> private var innerVar: Int >> } >> } >> >> Is outerVar visible inside Inner? To me this seems 'obvious'... Yes. >> >> Is innerVar visible to Outer? The answer to this impacts what I think the >> access modifiers should be called. > > Fair question. Data: > > - C++: no, but the language has "friend". > - Java: yes > - C#: no > > - Ruby: no, but "private" means something slightly different > - D: yes, but "private" means something more like Swift's current "private" > > - Kotlin: no > - Scala, Python, Go, Rust, Objective-C, Smalltalk: either no access control > or no nested types, AFAICT > > So it's tending towards "no" but it's not as consistent. I agree that if we > pick "yes" then (for example) "scoped" would be a confusing name.
No is the only answer that is consistent with Swift’s other access modifiers - i.e. strictly based on lexical scope. My opinion is that we should stick to strict lexical scoping. It is a simple and consistent principle that is easy to understand and explain. > > Jordan > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
