Pull to refresh

Comments 31

А теперь, не запуская интерпретатор Ruby, скажите, чему будут равны x,y,z?


x,y,z=1,10,100
x,y,z=y+z,x+z,x+y


Если появились сомнения, как должно быть, значит, не такая уж и красота...

Да, спецификаций на Ruby нет, поэтому может быть как угодно. Как Матцумото в последней версии интерпретатора напишет, так и будет...

У меня вот вышло => [110, 101, 11], а можно было бы ждать и [110, 210, 320]... От лукавого такой синтаксис.
судя по п.2 будет [110, 101, 11], т.к. это усложненный вариант обмена значениями
Странно, как можно было ждать [110, 210, 320]? Ведь, насколько я знаю, в большинстве языков программирования оператор присваивания сначала выполняет выражение, находящееся справа от него, тоесть считает [y+z,x+z,x+y], не изменяя самих значений, следовательно результат [110, 101, 11] вполне очевиден.
Для правильного ответа достаточно знать приоритет всех операторов.
Правильный ответ [110, 101, 11]. Я в уме посчитал, без интерпритатора, как и просили. На мой мозг спецификации тоже нигде нет, но ждать от него других результатов было бы глупо, как и ждать других результатов от Ruby :)
>не такая уж и красота
Согласитесь, любую красивую вещь можно превратить в некрасивую. И сделать это довольно просто. Вот пример:
Попробуйте без интерпретатора отгадать, что делает эта конструкция:
(1...10).to_a.sort_by{rand}.to_s.to_i
И запишите эквивалентную ей :)
на самом деле, ни я, ни вы не правы: в рандомном числе могут содержаться повторяющиеся числа, а в той конструкции — нет
Вы правы.
Хм, тогда аналогичной конструкции нет...
Multiple assignement есть в Perl, Python, Lua, Magma,…

Он был придуман давно и отчасти для того, чтобы делать a, b = b, a. Поэтому сомнений насчет логики выполнения здесь быть не может.

Для этой конструкции все уже описано и обсуждено. В Ruby сделано так, как все давно уже привыкли — сначала целиком вычисляется правая часть, потом все присваивается левой. Не Matz это придумал и не ему менять логику multiple assignement.
Не совсем. 4 не сработало. Доступ к элементам строки, как к элементам массива есть, но элементы изменять нельзя.
А есть ли в Питоне способ проверки пуст ли массив, подобный 6?
Мне нравится Питон, но отсутствие фигурных скобок {} и использование отступов для выделения блоков я считаю странностью.
Да, строки в питоне неизменяемые.
Да, например можно унаследовать стандартный массив, добавив такой метод.
Я долго писал на перле, теперь - на питоне, и вот, возвращаясь на перл, остро ощущаю избыточность всяких фигурных и простых скобок :)
та же фигня. :)

...Есть ли смысл после Питона изучать Руби? Спрашиваю без желаний запустить холивар, действительно интересно
Я руби не знаю, но если верно то, что говорят "руби вырос из перла", то думаю, это два эквивалентных языка. И тут уже вопрос личных предпочтений. Попробуй, попытка не пытка :)
нет, наверное неправильно говорить, что руби вырос из перла. стоит почитать The Ruby Way, там есть глава о сравнении этих двух языков.
Просто попробуйте.
Эти языки во многом схожи.
Часто в сравнении с питоном за руби приводят довод, что это "Чистый ООП язык".
В чем руби откровенно уступает - это в "обеспеченности". Пока нет большого коммьюнити, развитых библиотек и большого количества информации о языке. Мало "живых" примеров.
Но все это со временем появится.
UFO just landed and posted this here
ммм... а есть форум?
я знаю только раздел на форуме vingrad
Ruby очень похож на питон в плане синтаксиса.
Python:
  def returner(value)
    return value

Ruby:
  def returner(value)
    value
  end

Похоже в целом, только в Руби блоки явно заканчиваются кейвордом "end".
Но в руби зато нет жутких питоновских historical reason'ов типа:
something.___do_domeshing___
и почему удаление элемента хэша это del hash[key] а не hash.del(key)? (эту строчку у Юлика (http://live.julik.nl/2005/11/php-is-so-90s) взял).

Без холиваров - я считаю - изучать Руби стоит.
Как-то раз мне захотелось посмотреть на руби.
Посмотрел ролик про RoR - не особенно впечатлило.
А когда попытался узнать, чем же он всем так понравился, в основном натыкался на описание такого вот "синтаксического сахара".
UFO just landed and posted this here
Числа из пункта 3 работают так же и в C, и в Java (это к тому, что не так уж это и неожиданно). Кстати, числа - они не дробные, они с плавающей точкой.
А почему было не запостить этот чудесный пост в блог Rubi?
Карма... ((
Я даже комментировать сейчас нормально не могу...
Ох, огромное Вам спасибо. Это именна та ссылка, которая мне нужна. Если б мог, поставил бы плюсик :) А пока, ещё раз: большущее спасибище Вам!
Хороший сайт, я про него совсем забыл.
Теперь, когда я могу голосовать за комментарии, с радостью ставлю вам плюс!
отличнейшая ссылка, спасибо. занес в букмарки.
Третьим пунктом вы сэкономили мне много времени, спасибо!
Sign up to leave a comment.

Articles