Как конвертировать JavaScript в Ruby?

4

Я нашел это довольно старое сообщение в блоге о преобразовании кода JavaScript в код Ruby. Однако драгоценные камни, используемые в примерах (оба rkelly и ruby2ruby), по-видимому, сильно изменились за последние 7 лет, и теперь данные примеры не работают с ними. Я пытался немного поиграть с драгоценными камнями, но я не эксперт по Ruby, и у меня нет опыта в анализе и обработке языков, поэтому мои попытки не были успешными.

Мой вопрос: есть ли еще способ конвертировать код JavaScript в код Ruby с этими драгоценными камнями? И если да, то как?

  • 0
    Я отредактировал вопрос, но просто чтобы уточнить: я не ищу инструменты или библиотеки. У меня есть они, я просто не могу заставить их работать.
  • 0
    Я написал универсальный транспортер для перевода подмножества JavaScript в Ruby. Он также переводит Ruby на несколько других языков программирования.
Теги:

1 ответ

1
Лучший ответ

У вас будет очень плохой день, если вы захлопнете его через какой-то автоматический конвертер и назовите его. Большинство этих конвертеров имеют в лучшем случае шаткое понимание того, что происходит. Конечный результат примерно такой же неудобный и глухой, как и то, что производит 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 и подход к решению этой проблемы.

  • 1
    Пример, написанный на Ruby, является оптимизированной версией кода javascript. Прямой перевод будет использовать Array#each , а не Array#inject .
  • 0
    @ Олеандр Я пытаюсь проиллюстрировать здесь, как прямой перевод часто неоптимален и пропускает большую часть характера целевого языка.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню