Имеется следующая строка (пример на C, но для других языков - аналогично).
Пока лидирует решение на Perl (кто б сомневался):
Мой вариант не так эпичен:
Решения на сишностях не так интересны, они в основном с #define играют. А вот C#, Java, JavaScript и даже PHP с PowerShell - оказывается, ещё как могут! Слежу за развитием событий.
for(int i = 0; i < 3; ++i );Выполняется цикл, понятное дело, 3 раза. Задача: сделать этот цикл бесконечным, никак не модифицируя строку. Доп. условие: переменная цикла должна объявляться внутри него или непосредственно перед, но только объявляться. То есть так можно:
int i; for( i = 0; i < 3; ++i );А так - нельзя:
int i = some_magic(); // или int i; some_magic(&i); и т.д.
Пока лидирует решение на Perl (кто б сомневался):
use overload; BEGIN { overload::constant ( integer => sub { return 'inf' if($_[1]==3); $_[1]; } ); } for( my $x = 0; $x < 3; ++$x );Смысл его в том, что перегружается константа "3", она становится "inf", то есть бесконечностью.
Мой вариант не так эпичен:
use Variable::Magic qw/wizard cast/; my $foo = \${ *x{SCALAR} }; cast $$foo, wizard( set => sub { my ($ref) = @_; $$ref = 0; } ); for( our $x = 0; $x < 3; ++$x );В принципе аналогичное можно было бы соорудить и с tie, но так веселей :)
Решения на сишностях не так интересны, они в основном с #define играют. А вот C#, Java, JavaScript и даже PHP с PowerShell - оказывается, ещё как могут! Слежу за развитием событий.