> On Mar 28, 2016, at 6:38 PM, Matthew Johnson 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.
+1 -Chris _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
