Приведение строки к целому числу в GolfScript

12

GolfScript автоматически приводит значения в соответствие со следующей последовательностью «приоритет»:

целое число → массив → строка → блок

(перечислены от низшего к высшему.)

Это означает, что "1"7+строка остается "17"в стеке (а не 8), потому что строки имеют более высокий приоритет, чем целые числа.

[ Этим ветеранам GolfScript - извинения за оскорбление ваших умственных способностей. ]

Как можно было бы сделать это по-другому? То есть привести строку в целое число ?

digitalis_
источник
name:~ args:1 functions:bitwise not, dump, eval
Утренняя монахиня
Это дает 8.
Утренняя монахиня
@LeakyNun; Ницца! Вы хотите поставить это в ответ? Я бы, конечно, принял это.
digitalis_
@downvoter; Не могли бы вы оставить комментарий, объясняющий, почему вы проголосовали?
digitalis_

Ответы:

10

Там же оператор ~в golfscript, который делает следующее: bitwise not, dump, eval.

Следовательно, "1"выдаст строку, "1"а "1"~вычислит эту строку (в целое число 1).

Тогда все, что вам нужно сделать, это "1"~7+.

Попробуйте онлайн!

Дрянная Монахиня
источник
5
Стоит упомянуть, что это evalкод для игры в гольф, что означает, например "1.0"~, что-то неожиданное.
Линн