[swift-evolution] [Pitch] Improve `init(repeating:count)`
Erica Sadun
erica at ericasadun.com
Thu Aug 17 21:20:55 CDT 2017
> On Aug 17, 2017, at 7:38 PM, Xiaodi Wu <xiaodi.wu at gmail.com> wrote:
>
> On Thu, Aug 17, 2017 at 8:25 PM, Erica Sadun <erica at ericasadun.com <mailto:erica at ericasadun.com>> wrote:
> `repeatElement((), count: 5)` is better than `1 ... 5`, but `Count(3).map({ UIView() })` is far more elegant. I'd still probably go with an array initializer or `5.elements(of: UIView())`. I don't think I'm overstating how common this pattern is, and `Array(repeating:count:)` feels _close_ but not close enough.
>
> The first two have the benefit of being currently existing APIs;
I'm pretty sure Count isn't an existing API. And as I said before, while I don't think this rises to stdlib inclusion, it's been a common problem domain for people both inside and outside Apple so it deserves a full discussion.
That said, `Count` is neat. It encapsulates an idea in a way that I haven't seen in Swift.
-- E
> they capture the semantics perfectly, as I've argued, and I simply don't see how they are impaired in elegance in any way--certainly not enough to justify a standard library addition to create a third way of spelling the same thing. Ultimately, any user is free to define something like:
>
> ```
> func * <T>(lhs: Int, rhs: @autoclosure () throws -> T) rethrows -> [T] {
> return try repeatElement((), count: lhs).map { try rhs() }
> }
>
> 5 * UIView()
> ```
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20170817/06949bd2/attachment.html>
More information about the swift-evolution
mailing list