[Swift-devel] Feature proposal: struct constructors

Tim Armstrong tim.g.armstrong at gmail.com
Tue Feb 3 16:54:31 CST 2015


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-devel/attachments/20150203/db933869/attachment.html>


More information about the Swift-devel mailing list