From next C#
Idan Arye
GenericNPC at gmail.com
Sun Apr 6 15:46:34 PDT 2014
On Saturday, 5 April 2014 at 21:17:53 UTC, bearophile wrote:
> Upcoming features in C# (the text contains some extraneous
> chars, like in the 0b0010\_1110; literal):
>
> https://gist.github.com/anonymous/9997622
>
> Declaring out arguments at the calling point is nice, but
> returning a tuple as in Python/Haskell is better:
>
> GetCoordinates(out var x, out var y);
Returning a tuple is nice, but isn't the D way to return an
"anonymous" struct(well, yes, it has a name, but that name is
only defined inside the function that returns it...)?
At any rate, I think that C# feature will be more useful with
control structures. Imagine using `TryParse` in the condition
expression of an `if` statement, declaring there an out parameter
that'll only be accessible in the scope of the `if` statement.
> It's also nice the syntax to define struct/class members with
> the same name as class arguments as in Scala/TypeScript. But in
> D you can't use this syntax because those are template
> arguments:
>
> class Customer(string first, string last) {
>
> A solution is to use two groups, as for functions (but the
> default is the opposite for functions):
>
> class Customer()(private const string first, private const
> string last) {
Instead of this confusing syntax, how about making them regular
fields and marking them with a attribute that'll make the
compiler add them to the default constructor:
class Customer{
@default string first;
@default string last;
}
More information about the Digitalmars-d
mailing list