Pull to refresh

Comments 8

В C++17 есть предложение что-то подобное сделать: unified call syntax. Мне нравится, но в каком состоянии дискуссия по данному предложению, я не в курсе.
	auto output = map!((a) => a.foo())(vars);

Это можно записать проще:
	auto output = map!q{a.foo}(vars);


В данном случае контейнер можно было бы исправить и проще, сделав контейнер подтипом своего члена:
class Container(T) {
	this() {
		vars = [42, 15, 8];
	}

        alias vars this;

	T[] vars;
}
Я про контейнер, конечно, знал, хотел про него в следующей статье написать. А вот про другую запись функционального литерала я и понятия не имел. Спасибо, подправлю статью)
На самом деле это даже не функциональный литерал, а строка, которая при компиляции превращается в замыкание :-)
Вещь однозначно хорошая, но мне кажется, что всё-таки лучше структурируется код, если делать дополнительные методы через Extension'ы, как в C#, Rust, Swift.
[зануда]
Спросите любого программиста на Си, как бы он её вызвал

auto b = new A;

Поверьте — Си программист такое вам точно не напишет ;)
[/зануда]
Не говоря уже о том, что b будет иметь тип A*, а не A.
Вот только речь идёт о вызове функции, а не об объявлении)
Sign up to leave a comment.

Articles