Сожмите пробел
Знайте правила для пробелов на вашем языке. Некоторым знакам препинания или другим символам может не понадобиться окружающий пробел. Рассмотрим эту функцию оболочки Борна :
f () { echo a; echo b; }
В оболочке Bourne ();
есть метасимволы, и не нужно окружать их пробелами. Тем не менее, {}
слова являются и нуждаются в пробеле, если они не находятся рядом с метасимволами. Мы можем поиграть в гольф на 4 поля рядом с ();
, но мы должны оставить расстояние между {
и echo
.
f(){ echo a;echo b;}
В Common Lisp и PicoLisp , ()
есть метасимволы. Рассмотрим этот код, чтобы найти среднее из двух чисел:
(/ (+ a b) 2)
Мы можем сыграть в гольф на 2 места.
(/(+ a b)2)
Некоторые языки имеют странные и тонкие правила для пробелов. Рассмотрим программу Ruby, которая выводит сумму и произведение строки целых чисел.
#!ruby -an
i=$F.map &:to_i
puts"#{i.reduce &:+} #{i.reduce &:*}"
Каждому &
нужно пространство перед собой. В Ruby i=$F.map &:to_i
означает, i=$F.map(&:to_i)
где &
передается параметр блока. Но, i=$F.map&:to_i
означает, i=$F.map.&(:to_i)
где &
бинарный оператор.
Эта странность встречается в языках, таких как Perl или Ruby, которые используют неоднозначную пунктуацию. В случае сомнений используйте REPL или напишите короткие программы для проверки правил пробелов.