Тарас 7 месяцев назад
Родитель
Сommit
55e58d277d

+ 2 - 1
book/05-данные-и-функции-функциональный-стиль/README.md

@@ -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):