"for" statement issue

mogu via Digitalmars-d digitalmars-d at puremagic.com
Fri Oct 21 07:38:44 PDT 2016


On Friday, 21 October 2016 at 14:22:27 UTC, Steven Schveighoffer 
wrote:
> On 10/21/16 10:12 AM, Temtaime wrote:
>> On Friday, 21 October 2016 at 13:42:49 UTC, Adam D. Ruppe 
>> wrote:
>>> On Friday, 21 October 2016 at 13:33:26 UTC, Stefan Koch wrote:
>>>> [...]
>>>
>>> Eh, that's exactly what the language rules say should happen, 
>>> and it
>>> actually does make sense to me... you might even want to use 
>>> an
>>> immediately-called lambda to group several statements 
>>> together into
>>> one expression.
>>>
>>> [...]
>>
>> Please, no.
>> It's fully clear that { stmts } createa a lambda, just () is 
>> ommited.
>
> No, it's not.
>
> { int x; x = 2; }
>
> Is not a lambda. It's a scope.
>
> So the meaning changes based on where it's used. I totally 
> agree that we should remove that feature.
>
> -Steve

{} in swift is a lambda too. I think swift has better lambda 
syntax. Maybe could help for a better syntax in d.


reversedNames = names.sorted(by: { (s1: String, s2: String) -> 
Bool in
     return s1 > s2
})
reversedNames = names.sorted(by: { (s1: String, s2: String) -> 
Bool in return s1 > s2 } )
reversedNames = names.sorted(by: { s1, s2 in return s1 > s2 } )
reversedNames = names.sorted(by: { s1, s2 in s1 > s2 } )
reversedNames = names.sorted(by: { $0 > $1 } )
reversedNames = names.sorted(by: >)

someFunctionThatTakesAClosure(closure: {
     // closure's body goes here
})
someFunctionThatTakesAClosure() {
     // trailing closure's body goes here
}
let strings = numbers.map {
     (number) -> String in
     var number = number
     var output = ""
     repeat {
         output = digitNames[number % 10]! + output
         number /= 10
     } while number > 0
     return output
}


More information about the Digitalmars-d mailing list