Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Ruby: Общие вопросы > Динамическая типизация в Ruby |
Автор: beroal 23.1.2006, 14:45 |
Как у Ruby сделана динамическая типизация? Когда я работал с PHP, мне очень мешала некоторые противные особенности, а именно, что он молча конвертировал нечисловые строки в число ноль, ноль в ложь, если требовался массив - превращал число в массив из одного элемента и т.п. Разумеется, большинство этих преобразований типа были просто ошибками в программе, но отлавливать их из-за этой дурацкой динамической типизации было крайне трудно. Как у Ruby с этим дела? |
Автор: Pete 28.1.2006, 22:46 |
1. Ruby конвертирует строку в число, например, методом to_i. При этом выражение «"abc".to_i» вернет 0. Если же написать «"abc" + 123», то возникнет ошибка. 2. Числа в массив не конвертируются автоматически, как, например, здесь: «[1, 2, 3] + 5» (здесь «+» используется для объединения массивов). 3. В ruby каждая переменная — объект, то есть true (при проверке условия). nil («ничто», аналог NULL в Си) — false. Так что: irb(main):001:0> puts "!!!!" if 0 !!!! => nil (0 = true); irb(main):002:0> puts "!!!!" if [1, 2, 3] !!!! => nil ([1, 2, 3] = true); irb(main):003:0> puts "!!!!" if nil => nil (nil = false). |
Автор: beroal 29.1.2006, 17:25 | ||
Спасибо, это именно то, что я хотел знать. |
Автор: Pete 1.2.2006, 15:01 |
Прошу прощения, to_i — это, конечно же, не оператор, а метод. ![]() |
Автор: Cr@$h 24.8.2006, 16:25 | ||
|