Какие общие советы у вас есть для игры в гольф в Haxe ? Я ищу идеи, которые могут быть применены к задачам кода-гольфа и которые, по крайней мере, несколько специфичны для Haxe (например, «удалить комментарии» - это не ответ).
Пожалуйста, оставьте один совет за ответ.
Haxe можно запустить здесь !
Ответы:
Строковая интерполяция
Haxe поддерживает интерполяцию строк в строках с одинарными кавычками. Как и строки шаблона в JavaScript ES6, вы можете включить выражение в строку с помощью
${...}
:Однако, в отличие от ES6, вы можете опустить фигурные скобки, когда выражение представляет собой одну переменную:
Оба эти примера напечатаны
2 + 2 = 4
.источник
Массив пониманий
Haxe поддерживает массивы:
В отличие от многих других языков, вы также можете использовать
while
в понимании:Это может быть очень полезно, когда вы не знаете, какой размер массива вам нужен.
Вы можете также цепь
for
,while
иif
заявление:источник
Оператор дальности
В Haxe есть оператор диапазона,
...
который можно использовать для создания диапазонов целых чисел. Например, вместо этого:Ты можешь сделать это:
Специфика для
x...y
:x
иy
оба должны быть Ints.x
не может быть больше чемy
.источник
Условное заявление
Очевидно, что вы можете выполнить что-нибудь условно с
if
:Однако, если у вас есть только один оператор, как указано выше, вы можете использовать троичный условный оператор для сохранения байта:
Иногда вы можете сохранить другой байт с помощью
&&
, хотя это очень редко, потому что&&
работает, только если оба выражения возвращают логическое значение:Одним из главного исключения это ключевые слова : если Haxe работает в
return
,break
илиcontinue
где - нибудь , он будет сразу же запустить его и бросить все , что выражение было работать. Это означает, что вместо этого:Вы можете сделать это, чтобы сохранить 2 байта:
источник
Используйте ключевые слова в выражениях
Еще одна необычная особенность Haxe заключается в том, что все является выражением . Например, этот код совершенно корректен:
Хорошо, это довольно бесполезный пример, но, надеюсь, вы поняли мою точку зрения. Это работает с большинством ключевых слов:
Это позволяет использовать
if
/else
inline, какp=if(n>1)7else 4;
, хотя, конечноp=n>1?7:4;
, короче.Ключевые слова, которые вы не можете использовать inline
var
- Компилятор будет жаловаться на попытку использовать Void в качестве значения.for
/while
- То же, что и выше, хотя вы можете использовать их в массивах .источник
Опустить функциональные скобки
В отличие от большинства языков, все в Haxe является выражением , в том числе
{blocks}
. Таким образом, фигурные скобки в любом месте программы Haxe (за исключениемswitch
выражений) могут быть пропущены, если они содержат только одну инструкцию. Итак, вместо этого:Ты можешь сделать это:
Легкие два байта, сохраненные во многих функциях.
Даже если функция должна содержать несколько операторов, вы часто можете сохранить байт, перемещая
return
внешний блок:Это работает, потому что блок вычисляется до последнего выражения внутри блока.
источник
n*n*n
, или, что то же самое,n*n*n*n
для тессеракта числа и т. Д. Однако,Math.pow
здесь хороший пример.Math.pow(3,n)
вместо ;-)