[Swift-devel] Feature proposal: struct constructors

Justin M Wozniak wozniak at mcs.anl.gov
Wed Feb 4 10:50:23 CST 2015


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 list
> Swift-devel at ci.uchicago.edu
> https://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/7e5abf54/attachment.html>


More information about the Swift-devel mailing list