@ibond как раз только что сказал что это уже работает.
И - я проверил, таки да.
Ваш код из последнего ответа (если добавить writeln((a,s))
) превращается в:
PABCSystem.PABCSystem.Writeln((object) Tuple.Create<int, string>(5, "StringString"));
Gleb
16.Сентябрь.2018 16:58:51
#22
Ну так я не это имел ввиду. Речь идёт о том, что компилятор должен преобразовать это
var a := 2 + 3;
var s := 'String' + 'String';
В это
var a := 5;
var s := StringString;
RAlex
16.Сентябрь.2018 17:16:06
#23
Gleb:
var a := 5;
В var a := 5; - не должен ни разу, если он не оптимизирующий. Может, если так разработчики сделают, но никак уж не должен .
Нет, таки про это. Именно это он и сделал. посмотрите внимательно в код. То что все промежуточные переменные убирает - это особенность IL, в нём просто нет разницы между этим:
var a := 5;
writeln(a);
И этим:
writeln(5)
1 лайк
Gleb
16.Сентябрь.2018 18:14:45
#25
А ничего, что компилятор должен оптимизировать код?
RAlex
16.Сентябрь.2018 18:30:42
#26
Это кто Вам сказал? Компилятор должен лишь если он называется оптимизирующим.