Одно обходное решение должно записать .ToList().ForEach(x => ...)
.
профессионалы
Легкий понять - читатель только должен знать что поставки с C#, не любые дополнительные дополнительные методы.
Синтаксический шум является очень умеренным (только добавляет немного постороннего кода).
обычно не стоит дополнительной памяти, так как собственный компонент .ForEach()
должен был бы понять целый набор, так или иначе.
недостатки
Порядок операций не идеален. Я понял бы один элемент, затем действовал бы на него, затем повторяюсь. Этот код понимает все элементы сначала, затем действует на них каждый в последовательности.
При понимании списка выдает исключение, Вы никогда не добираетесь для действия на единственный элемент.
, Если перечисление бесконечно (как натуральные числа), Вы являетесь неудачливыми.
Вы хотите File :: Spec catpath
:
catpath() Takes volume, directory and file portions and returns an entire path. Under Unix, $volume is ignored, and directory and file are concatenated. A '/' is inserted if need be. On other OSes, $volume is significant. $full_path = File::Spec->catpath( $volume, $directory, $file );
Вам нужен File :: Spec . Существуют специальные версии для Unix , Win32 и MacOS , а также других .
Если вы находите File :: Spec громоздким, как я, попробуйте Path :: Class . Он дает вам каталоги и файловые объекты для работы, вместо того, чтобы вызывать длинные заученные методы класса File :: Spec для строк.
Похоже, вы используете разделитель путей для обозначения символа между компонентами имени каталога / файла. Но на всякий случай вы имели в виду другое значение:
Некоторые вещи (особенно переменные среды, такие как MANPATH или PERL5LIB) принимают список имен файлов или каталогов, разделенных символом разделителя пути. Модуль Perl Config переносимо предоставляет такой символ, как $ Config :: Config {'path_sep'}.
Q:Which path separator should I use to allow my script to work on both Windows and Unix?
A: /.
Explanation: Windows can work similarly to Unix with / as path separator. (Mac OS uses : as a path separator instead of /). The File::Spec modules can also help. use File::Spec::Functions; chdir(updir()); # go up one directory $file = catfile(curdir(), 'temp', 'file.txt'); # on Unix and Win32, './temp/file.txt' # on Mac OS, ':temp:file.txt' # on VMS, '[.temp]file.txt' Source: http://www.xav.com/perl/lib/Pod/perlport.html