On Mon, Dec 5, 2016 at 23:34 Braeden Profile via swift-evolution < swift-evolution@swift.org> wrote:
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 <saagar@saagarjha.com> 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 < > swift-evolution@swift.org> 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
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution