[swift-evolution] ExpressibleByStringInterpolation vs. String re-evaluation vs. Regex

Dave Abrahams dabrahams at apple.com
Tue Aug 9 15:53:42 CDT 2016


on Mon Aug 08 2016, Jacob Bandes-Storch <swift-evolution at swift.org> wrote:

> Hi Dave,
> I just filed https://bugs.swift.org/browse/SR-2303.
>
> Brainstorming: is it important that the init(stringInterpolation:) and
> init(stringInterpolationSegment:) requirements are on the same type?

As far as I'm concerned the design space is wide open.

> Perhaps it would work to separate these two requirements, allowing the
> segments to construct intermediate types, and only requiring the type
> adopting ExpressibleByStringInterpolation to implement
> init(stringInterpolation:).
>
> This would be nice because it would be much easier for types which aren't
> enums to conform to ExpressibleByStringInterpolation. In my auto layout
> example (https://gist.github.com/jtbandes/9c1c25ee4996d2554375), the
> ConstraintCollection type is only an enum because it has to provide all the
> initializers, but it's strange that the cases are accessible publicly;

I'm not sure whether what you're describing is just a limitation in our
access control (a public type conforming to a protocol must expose all
of that protocol's requirements as public members).  If so, maybe we
should fix *that*, rather than morphing designs to work around it.

That said, I don't really have time to think about the design of
ExpressibleByStringInterpolation in detail at the moment, as we're right
up against the Swift 3 ship date (sorry!)  If you'd bring it up in a few
months I'm sure I'll have a lot more bandwidth for it.

Thanks,

-- 
-Dave



More information about the swift-evolution mailing list