Эта статья изначально появилась на https://vahid.blog.
Некоторое время я работаю с JavaScript сейчас и довольно комфортно с его синтаксисом получился довольно комфортно.
Сейчас я также использую Ruby снова, у которого немного другой аромат.
Вот некоторые основные синтаксические различия между двумя языками, в формате таблицы.
1. Основы
Snake_Case. | CamelCase | Конвенция об именах для переменных, функций и методов |
Pascalcase | Pascalcase | Конвенция об именах для классов |
uvery_array = [1,2] | Пусть Somearray = [1,2]; Хотя VAR был исключительно использован в более старых кодовых базах, пусть теперь больше поощряется Потому что пусть Block Scoped, в то время как VAR является функцией, находящими наличию и может вызвать непреднамеренные последствия | Объявление переменных |
Quey_constant = 3.14 Ruby бросит предупреждение при попытке переназначить что-то еще в константу, но позволит вам сделать это | const someconstant = 3.14; Переназначение чего-то другого к константу, бросит ошибку | Объявляя константы |
Вы можете объявить глобальную переменную в любом месте, используя $ просто перед именем переменной (например, $ thiss_is_a_global_variable = 2100) | Объявите переменную с помощью пусть или Const в глобальном контексте. Однако, если переменная с таким же именем объявляется в локальном объеме, локальная переменная будет использоваться в этой области, но не глобальная переменная | Объявление глобальных переменных |
# это однострочный комментарий в Ruby это многострочный комментарий в Ruby | // Это однострочный комментарий в JS / * Это многострочный комментарий в JS * / | Комментарии |
ставит «привет мир» | Console.log («Hello World»); | Печать в консоли (автоматически добавляя новую строку) |
Печать «Привет» | Process.Stdout.Write («Hello») ; | Печать на консоль (без новой строки) |
если uvere_condition # это # и это ELSIF quey_other_condition # это вместо этого все остальное # | if (somecondition) {// делаю Это // и Это} else, если (домуобразие) {// сделать это вместо этого} else {// в противном случае сделаем это} | Условные заявления |
сделай это Если условие | Если (условие) Детс; | однострочное условное утверждение |
условие ? do_this_if_true: do_this_if_false. | условие ? Дотизифтрий: Дотизифальс; | Тройное условное выражение |
Выражение корпуса, когда X #Code Block, когда Y #Code Block Enter #Code Block End | Переключатель (выражение) {Case X: // Перерыв в блоке кода; случай Y: // перерыв блока кода; По умолчанию: // Bode Block} Если вы не ломаетесь, JS будет выполнять каждую строку после этого | Выключатель / случай |
def quey_method (param1, param2) #do Вещи Вернуть что-то конец, если ключевое слово возврата никогда не используется, метод вернет все, что рассчитано на последней строке до окончания оператора. | Функция некоторой функции (param1, param2) {// делают вещи что-то еще; } Если ключевое слово возврата никогда не используется, функция вернет undefined | Определите функцию / метод |
себя | это | Ключевое слово для ссылки на текущий конкретный экземпляр объекта |
Начните # сделать что-нибудь рискованное спасение # конец | попробуйте {// сделать что-то рискованное} catch (Err) {// Ошибка обработки здесь} | Обработка ошибок |
2. Массивы и строки
new_array = uvery_array`.map { | const newarray = somearray.map (el => el * 2) | Map / Collection Method (возвращение нового массива настраиваемых элементов из оригинального массива) |
uver_array.each { | somarray.foreach (el => console.log (el)); | Итайте через элементы массива в одной строке и без необходимости в индексе # |
uvery_arr.each_index. делать | для (пусть; i <somearrl.length; i ++) {console.log (i, somearr [i]); // Остальный блок} | Итайте через элементы массива для выполнения блока, требующего индекса # |
uvery_array.delete_at (i) Чтобы удалить все элементы определенного значения (например, «CAT») независимо от номера индекса, используйте: quey_array.delete (‘cat’) | somarray.splice (I, длина); Где # начать удаление, и длина = # элементов для удаления | Удалить элемент при индексе I массива |
const uniquearray = [… Новый набор (Сомэррай)]; | Вернуть уникальные значения массива | |
const.filter (EL => EL> 5); Например. Возвращает все элементы в Somearray больше 5 | Фильтруйте массив | |
quey_array.include? (5) Например. Возвращает true, если имеет элемент quote_array со значением 5 для методов, которые возвращают булевую, ключевую конвенцию Ruby – это назвать их с помощью? в конце | somarray.includes (5); Например. Возвращает true, если у Somearray есть элемент со значением 5 | Проверьте, находится ли элемент в массиве |
Строка Concatenation | ||
var_string = uvere_num.to_s. | Пусть varstring = somenum.tostring (); | Преобразовать номер в строку |
var_num = quey_string.to_i. | Пусть варнум (SAMESTRING); | Преобразовать строку в целое число |
var_num = quey_string.to_f. | Пусть варнум (SAMESTRING); | Преобразовать струну на поплавок |
3. Объекты/хэши
хэш | объект | Тип данных пары ключа вызывается |
Старый метод, символ и хэш-ракеты: que_hash = {: key1 => значение1,: key2 => значение2} или новее, метод очистителя: uvere_hash = {key1: value1, key2: value2} | const uventobject = {key1: value1, key2: value2}; | Объект / хеш Создание + назначение (буквальное обозначение) |
some_hash.new | const eventobject объект; | Создание объекта / хеш (нотация по созданию класса) |
some_existing_object [: Key3] = значение3. | SomeexistingObject [Key3] = значение3; или someexistingobject.ky3 = значение3; | Добавить пару клавиши / значения на существующий объект / хеш |
uver_hash.each { | для (допустить ключа в какой-нибудь vjobject) {console.log (ключ, quotebject [ключ])}; | Итерация через объект / хеш в одной линии |
const somearray = object.entries (какой-тоobject); | Конвертируйте объект / хеш на массив подзаготовок [ключ, значение] | |
uvery_hash.delete (uvere_key) | Удалить quotebject [umykey]; | Удалить ключ / Value Pair |
uvery_hash.has_key? (que_key) – или – метод Fetch позволяет получить значение в клавише или указывать альтернативное возвращаемое значение, если ключ не существует: uvere_hash.fetch (uvere_key, сообщение об ошибке “) | quotebject.hasownproperty (Swiorkey) | Проверьте, имеет ли объект / хеш ключ |
Оригинал: “https://dev.to/dej/syntax-differences-between-ruby-and-javascript-1adl”