05 - fix 5.2.4 example
This commit is contained in:
parent
59446ae9e5
commit
55e58d277d
|
@ -258,7 +258,8 @@ void log(string message)
|
|||
writeln(message);
|
||||
}
|
||||
...
|
||||
int result = foo(); log("foo() returned " ~ to!string(result));
|
||||
int result = foo();
|
||||
log("foo() returned " ~ to!string(result));
|
||||
```
|
||||
|
||||
Как видим, вычислять выражение `"foo() returned " ~ to!string(result)` нужно, только если переменная `verbose` имеет значение `true`. При этом выражение, передаваемое этой функции в качестве аргумента, будет вычислено в любом случае. В данном примере это конкатенация двух строк, которая потребует выделения памяти и копирования в нее содержимого каждой из них. И все это для того, чтобы узнать, что переменная `verbose` имеет значение `false` и значение аргумента никому не нужно! Можно было бы передавать вместо строки делегат, возвращающий строку (делегаты описаны в разделе 5.6.1):
|
||||
|
|
Loading…
Reference in New Issue