No special restriction here.  Like I said, it’s just another way of writing a 
file-level extension within that namespace.  All the functions can then be 
defined as private, public, internal, etc. as necessary.  The point would be to 
define functionality for something within the right block.  If I’m writing an 
entire set of types within MathEvaluator (or SelectMode, or whatever I’m 
writing), I want to be able to keep the whole file within MathEvaluator’s 
scope.  I do, however, wish to write the subtypes in terms of “definition here, 
functionality there” the way extensions allow.

I don’t remember a verdict from the `struct MathEvaluator.Number` syntax 
discussion.  Was that shot down, or still a possibility?

> On Dec 5, 2016, at 3:04 PM, Saagar Jha <[email protected]> wrote:
> 
> How exactly would this work? Would it restrict the extension to only the 
> scope it’s defined in?
> 
> Saagar Jha
> 
> 
> 
>> On Dec 5, 2016, at 1:48 PM, Braeden Profile via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> I really enjoy having the ability to write and nesting my code at the 
>> appropriate indentation level in my file.  Extensions are fabulous, but I 
>> wonder—solely for readability/style sake, could we allow you to properly 
>> namespace your extensions?  Though I don’t know the implementation cost of 
>> this, I think it could be useful to be able to write this:
>> 
>> class MathEvaluator
>> {
>>      struct Number
>>      {
>>              let value: Double
>>      }
>>      
>>      struct Operation
>>      {
>>              let numbers: (Number, Number)
>>              let transform: (Double, Double) -> Double
>>      }
>>      
>>      extension Number
>>      {
>>              var factors: [Double]
>>              {
>>                      // Calculate and return the factors
>>              }
>>      }
>> }
>> 
>> …which would be completely equivalent to:
>> 
>> class MathEvaluator
>> {
>>      struct Number
>>      {
>>              let value: Double
>>      }
>>      
>>      struct Operation
>>      {
>>              let numbers: (Number, Number)
>>              let transform: (Double, Double) -> Double
>>      }
>> }
>>      
>> extension MathEvaluator.Number
>> {
>>      var factors: [Double]
>>      {
>>              // Calculate and return the factors
>>      }
>> }
>> 
>> This change is in the same ball park as this, proposed a week or two ago:
>> 
>> struct MathEvaluator.Number
>> {
>>      let value: Double
>>      
>>      var factors: [Double]
>>      {
>>              // Calculate and return the factors
>>      }
>> }
>> _______________________________________________
>> swift-evolution mailing list
>> [email protected] <mailto:[email protected]>
>> https://lists.swift.org/mailman/listinfo/swift-evolution
> 

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to