On Tuesday, 23 May 2017 at 16:13:19 UTC, Andrey wrote:
Hello! I am constantly worried about this flaw, why this bug
still was not resolved:
https://issues.dlang.org/show_bug.cgi?id=8006
e.g. in Kotlin I can write property like this:
class Example {
var value: Int = 0
set(v) {
field = v
}
get() = field
}
fun main() {
var e = Example()
e.value = 10
e.value += 1
println(e.value)
And it will work!
In D I can write something like this:
class Example {
private int value_; @property {
void value(in int val) {
value_ = val;
}
int value() {
return value_;
}
}
}
That's great, but еhe absence of in-place operators creates
additional problems sometimes, and using ref I think not a good
idea, because of inconsistency.
struct Foo
{
private int value_;
void value(int v) { value_ = v; }
ref inout(int) value() inout { return value_; }
}
void main()
{
import std.stdio;
Foo foo;
foo.value += 150;
writeln(foo.value);
}
Which inconsistency do you mean? Not calling a function when
applying an operator to a property?