On Mon, Dec 26, 2016 at 3:17 PM, Adam Nemecek via swift-evolution <
[email protected]> wrote:

> > Array already has init(repeating:count:) that puts the responsibility
> of choosing the default value at the call site. If someone were writing a
> generic algorithm around this, then why not just propagate that
> responsibility out to its call site as well? That way, the algorithm isn't
> making any assumptions about what the "default" value is or even if one
> exists,
>
> Because encapsulation. There's a reason NSObject has a default initializer.
>

Can you elaborate? What is the reason that NSObject has a default
initializer? I suspect it has to do with Objective-C "stuff," but can you
point me to a resource explaining the rationale behind the design of
NSObject?


On Mon, Dec 26, 2016 at 12:10 PM, Tony Allevato via swift-evolution <
> [email protected]> wrote:
>
>> On Mon, Dec 26, 2016 at 11:57 AM David Sweeris via swift-evolution <
>> [email protected]> wrote:
>>
>>>
>>> On Dec 26, 2016, at 11:35, Tony Allevato <[email protected]> wrote:
>>>
>>> Mathematically, identities are associated with (type, operation) pairs,
>>> not types alone.
>>>
>>> This conversation has put me in the column of "numeric types shouldn't
>>> have default initializers at all", personally.
>>>
>>>
>>> I'd agree, except sometimes you need a T, *any* T, for when you want to
>>> create a "pre-sized" array for stuffing results into by index:
>>> for i in ... {
>>>     a[i] = ...
>>> }
>>> Simply saying "var a =[T](); a.reserveCapacity()" doesn't cut it because
>>> it'll still crash if you try to store anything in a[i] without somehow
>>> putting at least i+1 elements in the array first.
>>>
>>
>> Array already has init(repeating:count:) that puts the responsibility of
>> choosing the default value at the call site. If someone were writing a
>> generic algorithm around this, then why not just propagate that
>> responsibility out to its call site as well? That way, the algorithm isn't
>> making any assumptions about what the "default" value is or even if one
>> exists, and it doesn't impose additional requirements on the element type.
>> For example, the user could get the default from a static factory method,
>> an instance method on another object, or something else entirely.
>>
>>
>>
>>>
>>> - Dave Sweeris
>>> _______________________________________________
>>> 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
>>
>>
>
> _______________________________________________
> 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

Reply via email to