digitalmars.D - equals assignment
- Urza (9/9) Apr 27 2007 I think d should add an operator for assignment ":=" instead
- renoX (18/29) Apr 27 2007 Uh, could you explain better what's the difference between = and := ?
- Michiel Helvensteijn (8/11) Apr 27 2007 When should an assignment be used as part of an expression anyway? It's ...
- Dan (5/22) Apr 27 2007 Heehee... today I retired from my job.
I think d should add an operator for assignment ":=" instead of "==" like Perl 6. http://dev.perl.org/perl6/doc/design/apo/A03.html I recently had trouble with == and = and I think D should add a Pascal like equals operator. This would be an improvement and allow the avoidance of a == d + 1; errors ie if (a == d) ... ie if (a := d) ... :=
Apr 27 2007
Urza a écrit :I think d should add an operator for assignment ":=" instead of "==" like Perl 6. http://dev.perl.org/perl6/doc/design/apo/A03.htmlUh, could you explain better what's the difference between = and := ? The explanation in the Perl webpage is .. weird .. (that said being a webpage about Perl, I'm not surprised).I recently had trouble with == and = and I think D should add a Pascal like equals operator. This would be an improvement and allow the avoidance of a == d + 1; errors ie if (a == d) ... ie if (a := d) ... :=A bad idea: = is shorter than :=, less character: less cruft. The 'correct' way to avoid the == and = confusion is to make if accept only booleans: this way if a and d are int 'if (a = d)' is incorrect. The only remaining issue is that it doesn't totally avoid the problem: you can still have = and == confusion when a and d are boolean, an error quite hard to find.. Another solution is the gcc hack of making the compiler warn on any = inside a 'if' except when there is a (( )), it's a hack but it's a more complete solution.. That said, given that D is based on C/C++ syntax (it even reused C's ugly syntax for variable declaration instead of using a nice syntax like Limbo or Scala do), I doubt that you'll get much success for the replacement of = by :=. renoX
Apr 27 2007
renoX wrote:Another solution is the gcc hack of making the compiler warn on any = inside a 'if' except when there is a (( )), it's a hack but it's a more complete solution..When should an assignment be used as part of an expression anyway? It's only a way to make code more compact and less readable. Maybe an assignment just shouldn't return anything. I think the compiler should still be able to implicitly cast int to bool, though. -- Michiel
Apr 27 2007
Heehee... today I retired from my job. On thursday I'm going to a tropical island. That said... I think the real solution is to just use the right operator, and recognize the difference between = and ==, just like you know to put a semicolon at the end. It's trivial. Worry about metaprogramming or 'in' operator for normal arrays, proveability or something. : p Michiel Helvensteijn Wrote:renoX wrote:Another solution is the gcc hack of making the compiler warn on any = inside a 'if' except when there is a (( )), it's a hack but it's a more complete solution..When should an assignment be used as part of an expression anyway? It's only a way to make code more compact and less readable. Maybe an assignment just shouldn't return anything. I think the compiler should still be able to implicitly cast int to bool, though. -- Michiel
Apr 27 2007