Я нашел это довольно старое сообщение в блоге о преобразовании кода JavaScript в код Ruby. Однако драгоценные камни, используемые в примерах (оба rkelly и ruby2ruby), по-видимому, сильно изменились за последние 7 лет, и теперь данные примеры не работают с ними. Я пытался немного поиграть с драгоценными камнями, но я не эксперт по Ruby, и у меня нет опыта в анализе и обработке языков, поэтому мои попытки не были успешными.
Мой вопрос: есть ли еще способ конвертировать код JavaScript в код Ruby с этими драгоценными камнями? И если да, то как?
У вас будет очень плохой день, если вы захлопнете его через какой-то автоматический конвертер и назовите его. Большинство этих конвертеров имеют в лучшем случае шаткое понимание того, что происходит. Конечный результат примерно такой же неудобный и глухой, как и то, что производит Google Translate.
Лучший способ сделать это - написать тесты для вашего JavaScript, перенести эти тесты в Ruby, а затем перевести свой JavaScript на Ruby по частям.
Как работает JavaScript, часто много отличается от того, как работает Ruby. Существуют совершенно разные предположения о том, как организован код, как вызываются функции и какие инструменты доступны.
Например, в JavaScript:
var count = 0;
_.each(array, function(e) {
count += Math.pow(2, e);
})
return count;
Это будет в Ruby:
array.inject(0) do |s, e|
s + 2 ** e
end
Это довольно простой пример, и все же есть много различий в API и подход к решению этой проблемы.
Array#each
, а не Array#inject
.