Поло, водное по-оло!..

There are two non-empty arrays $a and $b. What is the result of their sum (+)?

View Results

Loading ... Loading ...

Рекламная пауза

ruby

На сайте Ruby в шапке сайта среди прочих проскакивает такой вот листинг:

# Output "I love Ruby"
say = "I love Ruby"
puts say

# Output "I *LOVE* RUBY"
say['love'] = "*love*"
puts say.upcase

# Output "I *love* Ruby"
# five times
5.times { puts say }

И вот что, после этого нельзя сказать, что Ruby — совершенно крейзанутый язык? На всю башку?..

[tags]программирование, ruby, россыпь[/tags]

Share:
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Juick
  • Twitter

6 comments to ruby

  • Я ненавижу такие языки. Меня просто в закорючку сворачивает и разворачивает обратно, когда я вижу какую-нибудь очередную «красивую» конструкцию, которая позволяет сэкономить пару строк в распространённом случае, потому что я знаю, что обратная сторона этого синтаксического сахара — часы отладки за поиском какой-нибудь мелочи. Когда в языке какое-нибудь эдакое волшебство срабатывает тогда, когда не ожидалось, или не так, как ожидалось, то результаты могут отдаться так, что хрен найдёшь причину. Сколько человеко-лет загублено в масштабах планеты на поиски ошибок из-за одного только «сложения» числа со строкой!

  • Красота тут относительная; но сам понимаешь, я число со строкой складывать не буду.

  • Специально, может, и не будешь. А оно случайно проскользнёт, и там, где должна бы произойти ошибка при компиляции или по меньшей мере при выполнении, бессмысленный результат тихо будет путешествовать дальше по базам данных и каналам связи.


  • stanis@nav:~$ irb
    irb(main):001:0> 1 + "a"
    TypeError: String can't be coerced into Fixnum
    from (irb):1:in `+'
    from (irb):1

  • Конкретно что касается этого сложения — я не про Ruby говорил. В Ruby набор спотыкалочек свой отдельный, которого я не знаю, но некоторые подозрительные конструкции показаны в этом посте.

  • У руби несколько иная мотивация, так что в целом мимо тазика.

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">