Comments 40
этакое закрепление материала;)
0
Спасибо, как раз вовремя, многие накопившиеся мелкие вопросы, которые хотел задать одним махом, отпали :) Хотя не очень понятно про предикаты и «опасные» (как их кто-то называл в комментах) методы — это просто соглашение об именовании или синтаксис языка? Мне кажется, что первое, я прав?
Добавлю, что недавно встретил где-то про unless
Хотя unless и может работать с else, но не рекомендуется, то есть синтаксически верную конструкцию
лучше заменять на
P.S. Эх, не догадался попровать str = gets вместо gets str по старым сишным привычкам :)
Добавлю, что недавно встретил где-то про unless
Хотя unless и может работать с else, но не рекомендуется, то есть синтаксически верную конструкцию
unless a > b puts a else puts b end
лучше заменять на
if a <= b # или b > a puts b else puts a end
P.S. Эх, не догадался попровать str = gets вместо gets str по старым сишным привычкам :)
0
Интересная особенность while:
В Си есть два варианта: while(){} и do{}while(). Разница в том, проверяется условие до выполнения тела цикла или после.
В Руби while можно написать перед телом цикла или после него, но работать оба варианта будут одинаково. Условие проверяется до выполнения тела цикла в любом случае.
Аналог do while можно получить только не очень красивым способом вроде использования break с условием в конце тела цикла loop, если я правильно понимаю.
В Си есть два варианта: while(){} и do{}while(). Разница в том, проверяется условие до выполнения тела цикла или после.
В Руби while можно написать перед телом цикла или после него, но работать оба варианта будут одинаково. Условие проверяется до выполнения тела цикла в любом случае.
Аналог do while можно получить только не очень красивым способом вроде использования break с условием в конце тела цикла loop, если я правильно понимаю.
0
Всё верно.
Также ещё нужно упомнять итераторы вида x.upto(y){|i|...} x.downto(y){|i|...} x.step(y,s){|i|...}
Также ещё нужно упомнять итераторы вида x.upto(y){|i|...} x.downto(y){|i|...} x.step(y,s){|i|...}
0
Не совсем:
Как раз напечатает один раз 1, и только потом будет проверено условие while, которое оборвёт цикл.
begin
puts 1
end while false
Как раз напечатает один раз 1, и только потом будет проверено условие while, которое оборвёт цикл.
+2
Кажется разобрался, что к чему: (примерный перевод)
В случае
begin <code> end while <cond>код обязательно выполнится хотя бы 1 раз; тогда как в случае
<code> while <cond>может ни разу не выполниться; потому что это эквивалентно записи
while <cond> <code>
begin/end часто становятся источником замешательства. Было бы хорошо избавиться от них совсем.
0
ой… закапали… неуспеваем за вами.
спасибо!
спасибо!
0
Предлагаю в качестве заключения написать статейку: «Почему именно Ruby?» или «Преимущества Ruby» или что-то в этом роде. Спасибо за отличный цикл статей!
0
возможно стоить сделать «Дополнение» (читай итог) в виде таблички с описанием классов, методов, операторов… и их синтаксиса. так как читают вас и начинающие программисты.
0
«Почему именно Ruby» обязательно вылиться в holly war (с PHP и Python программистами в основном). Лучше пусть каждый сам решит, потому что у Ruby преимущества не очень формализуемые: «синтаксический сахар», стройная идеология, лёгкость DSL.
0
Почитайте в первых каплях в комментах мои «холивары» с рубистами :)
P.S. А что так сразу заключение, вроде еще много чего нам автор собрается рассказать
P.S. А что так сразу заключение, вроде еще много чего нам автор собрается рассказать
0
Не понятно, только, зачем переносить топики по Руби в новый блог со странным названием?
+1
затем, чтобы облегчить доступ к статьям, написание которых автор видимо намерен продолжать. возможно в новом блоге появятся подобные статьи по другим языкам программирования. так что идея очень даже хороша! а вот название правда странное))
0
Высказывали автору пожелания отделить статьи от остального блога Ruby (действительно, изучающим руби по «каплям» так удобнее следить, по себе сужу), а на хабре подблог сделать вроде как нельзя.
0
Зачем плодить одинаковые блоги, но с разными названиями? Непонятно…
+1
Касательно последних строк о хэшах: в руби 1.9 хэши будут упорядочены, что весьма упрощает многие задачи.
0
UFO just landed and posted this here
Руби! Компиляй!
-1
Комментарии…
1. STDOUT.flush после puts — невкусно, ибо ничего не делает. Лучше уж тогда print.
2. В примере про strip лучше выводить через inspect (p string), в противном случае не будет видно разницы.
3. Оператор <cond>? <expr>: <expr> обычно называется тернарным, слова «трёхместный» что-то ни разу не встречал.
1. STDOUT.flush после puts — невкусно, ибо ничего не делает. Лучше уж тогда print.
2. В примере про strip лучше выводить через inspect (p string), в противном случае не будет видно разницы.
3. Оператор <cond>? <expr>: <expr> обычно называется тернарным, слова «трёхместный» что-то ни разу не встречал.
+1
1. Как это ничего не делает? _Оо
Вывод puts не отображается, пока программа работает, если не делать периодически FLUSH.
Вывод puts не отображается, пока программа работает, если не делать периодически FLUSH.
0
последниЙ капля?
+1
Асоциативные массивы (далее хэши, hashes) похожи на массивы, так как они также _содаржат_ упорядоченный набор объектов.
+1
сначала прочитал «Покурим Руби вместе» :-)
0
Ну Вы даёте!
+1
UFO just landed and posted this here
Вы будете исправлять ошибки в статье или нет? :)
0
strip убирает пробелы не только в конце строки, а вообще, убирает все непечатные и пробельные символы в конце и в начале строки:
> puts " \n \t test \r \n".strip.inspect "test"
0
Sign up to leave a comment.
Покорим Ruby вместе! Капля седьмая