среда, 13 августа 2014 г.

Ruby. Specific features. Специфические особенности

Ruby - интерпретируемый динамичный язык программирования высокого уровня, пришедший к нам из далекой утонченной страны Японии (Аниме!!!!!). Его так же сложно понять, как и умы японцев. Взгляните только на это:
http://www.youtube.com/watch?v=V3j4Y3InMHc

Рассказывать я буду не про достоинства и недостатки Ruby, а про характерные особенности, незнания которых могут привести к серьезным ошибкам. (Если рассуждать про достоинства и недостатки, начнется безудержный холивар)

1. ООП от головы до пят


Ruby - полностью объектно-ориентированный язык. Это означает, что все данные в нем являются объектами, в отличие от многих языков программирования с примитивными типами. Каждая функция - метод какого-то класса.

"Ruby".class
=> String 
1.class
=> Fixnum
123.to_s
=> "123"

Как видите, даже численные примитивы являются объектами со своим набором методов. Даже true и false являются объектами классов TrueClass и FalseClass

2. Правда и ложь. Объект nil


В Руби всего два объекта обладают булевым значением false. Это объект false и объект nil (не NULL, как во многих других языках!). Все остальные объекты являются эквивалентами булевого значения true. Это означает, что число 0 так же является эквивалентом значения true!

if 0
   print "0 is true"
end
0 is true => nil

if !nil
   print "nil object is false"
end
nil object is false => nil

if !false
   print "false object is false"
end
false object is false => nil

3. Объекты передаются по ссылке


В Ruby методы получают ссылку на объект, а не копию его значения. Это означает, что изменение объекта внутри метода повлечет за собой его изменение в вызывающем контексте. В Ruby это называется вызов по соиспользованию (объект является рязделяемым, или используемым совместно).

ЗАМЕЧАНИЕ: Присвоение значения аргументу в методе не повлечет за собой никаких изменений в вызывающем контексте. Присвоение значений компонентам аргумента - повлечет.

Заключение


Если хотите узнать больше, переходите сюда, изучайте и достигайте просвещения.

Комментариев нет:

Отправить комментарий