Thread overview |
---|
November 30, 2015 having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
It seems like `std.algorithm.each` is not executed in the example below. Could anyone tell why? Thank you. import std.algorithm; void main(string[] args) { int[] arr = [1, 2, 3, 4, 5]; arr.each!((ref e) => { writeln(e); // does not print ++e; })(); writeln(arr); // prints [1, 2, 3, 4, 5] } |
November 30, 2015 Re: having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | DMD 2.069.1 OS Win8.1 Enterprise |
November 30, 2015 Re: having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
Posted in reply to ref2401 | On Monday, 30 November 2015 at 09:56:08 UTC, ref2401 wrote:
> DMD 2.069.1
> OS Win8.1 Enterprise
in a multiline statement, i believe you must use :
arr.each!((ref e) {
writeln(e);
++e;
})
"=>" is for oneliner
though i don"t understand why it fails silently ??
|
November 30, 2015 Re: having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
Posted in reply to visitor | On 30.11.2015 11:50, visitor wrote:
> though i don"t understand why it fails silently ??
ref2491's original code is valid, but doesn't have the intended meaning. `e => {foo(e);}` is the same as `(e) {return () {foo(e);};}`, i.e. a (unary) function that returns a (nullary) delegate. Calling it does not run foo. In contrast, calling this runs foo: `e => foo(e)`.
|
November 30, 2015 Re: having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Monday, 30 November 2015 at 12:03:08 UTC, anonymous wrote: > On 30.11.2015 11:50, visitor wrote: >> though i don"t understand why it fails silently ?? > > ref2491's original code is valid, but doesn't have the intended meaning. `e => {foo(e);}` is the same as `(e) {return () {foo(e);};}`, i.e. a (unary) function that returns a (nullary) delegate. Calling it does not run foo. In contrast, calling this runs foo: `e => foo(e)`. > `e => {foo(e);}` is the same as `(e) {return () {foo(e);};}` Ok, Thanks ! :-) |
November 30, 2015 Re: having problem with `std.algorithm.each` | ||||
---|---|---|---|---|
| ||||
Posted in reply to anonymous | On Monday, 30 November 2015 at 12:03:08 UTC, anonymous wrote:
> On 30.11.2015 11:50, visitor wrote:
>> though i don"t understand why it fails silently ??
>
> ref2491's original code is valid, but doesn't have the intended meaning. `e => {foo(e);}` is the same as `(e) {return () {foo(e);};}`, i.e. a (unary) function that returns a (nullary) delegate. Calling it does not run foo. In contrast, calling this runs foo: `e => foo(e)`.
Got it. Thank you)
|
Copyright © 1999-2021 by the D Language Foundation