[Swift-devel] Feature proposal: struct constructors

Tim Armstrong tim.g.armstrong at gmail.com
Wed Feb 4 11:14:02 CST 2015


I don't think it's ambiguous syntactically - the two space-separated id
tokens are unambiguously the start of a variable declaration, so the open
paren can be interpreted unambiguously.

I think the main downside would be that users have remember a special-case
way to assign a struct at declaration time.

Swift/T also has (I think 100% consistently) a rule that the only way to
assign a variable is for it to be on the LHS of a = .  I think the
consistency of that is good.

With the expression syntax plus automatic variable declaration, it's
actually possible to shorten:

foo bar = foo(1,2);

to:

bar = foo(1,2);

- Tim


On Wed, Feb 4, 2015 at 10:50 AM, Justin M Wozniak <wozniak at mcs.anl.gov>
wrote:

>
> There's also this compact style:
>
> foo bar(1,2);
>
> Is it ambiguous?  C++ has issues with this.
>
>
> On 02/03/2015 04:54 PM, Tim Armstrong wrote:
>
>   Hi All,
>    While designing a location-aware feature for Swift/T Justin and I came
> across a scenario where we wanted to use Swift structs, but where it was
> very painful to assign each element individually.  To give you an idea:
>
> type foo {
>    int x;
>    int y;
>  }
>
>  foo bar;
> bar.x = 1;
> bar.y = 2;
>
>  I'm looking at adding a feature where we can fill in a structs fields
> with a single expression.
>
>  We could do them the C-style way, but that doesn't allow us to use them
> without defining a new variable (the issue is that {} doesn't specify the
> intended type, meaning it needs to come from context):
>
>  foo bar = { 1, 2 };
>
>  I was thinking  that we should just have types function as named
> constructor functions.  There's precedent both in object-oriented languages
> and with Haskell's algebraic data types.  Now you can just use this
> expression wherever needed:
>
> foo(1, 2)
>
>  Thoughts?  I'm reluctant to add new incompatibilities with Swift/K, but
> this seems like it would be really clunky otherwise.
>
>  - Tim
>
>
> _______________________________________________
> Swift-devel mailing listSwift-devel at ci.uchicago.eduhttps://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-devel
>
>
>
> --
> Justin M Wozniak
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-devel/attachments/20150204/3fd17f10/attachment.html>


More information about the Swift-devel mailing list