Предыдущая часть – часть 1: синтаксис.
Содержание
Создание класса
Классы в Ruby описываются при помощи ключевого слова class
, например:
$ irb irb(main):001:0> class RubyClass irb(main):002:1> puts "This is class" irb(main):003:1> end This is class => nil
Класс всегда завершается оператором end
.
Переменные в классах Ruby
- Локальные переменные: это переменные, описанные в методе класса и недоступны вне этого метода. Локальные переменные всегда начинаются с символа подчеркивания “
_
“. - Переменные экземпляра класса: это перкменные, доступные всем методам экземпляра класса. Такие переменные начинаются с символа “
@
“. - Переменные класса: переменные, доступ к которым есть у всех экземпляров класса. Имена таких перменных начинаются с “
@@
“. Хороший пост на тему разницы между переменными класса и переменными экземпляра класса есть тут>>>. - Глобальные переменные: переменные класса недоступны напрямую другим классам. Что бы определить переменную, доступ к которой будет у всех классов – можно определить глобальную пемренную, которая начинается с символа “
$
“.
Создание объекта класса – метод new
Для создания нового экземпляра класса в Ruby используется встроенный метод класса new
, например:
irb(main):004:0> class TestClass irb(main):005:1> puts "This is test class" irb(main):006:1> end This is test class => nil irb(main):009:0> ex1 = TestClass.new => #<TestClass:0x007fd6d4949370> irb(main):010:0> ex2 = TestClass.new => #<TestClass:0x007fd6d4951fe8>
Создание объекта класса – метод initalize
Если вам требуется создать новый экземпляр класса и передать ему какие-то аргументы – вам необходимо создать метод initalize
. Он будет вызываться каждый раз, когда будет создаваться новый объект класса.
Например:
$ cat init.rb #!/usr/bin/env ruby class Customer @@no_of_customers=0 def initialize(id, name, addr) @cust_id=id @cust_name=name @cust_addr=addr end def exec puts @cust_id, @cust_name, @cust_addr end end c = Customer.new("id", "somename", "someaddr") c.exec
Тут объявляется специальный метод initialize
, который принимает три аргумента для трех локальных переменных – @cust_id
, @cust_name
и @cust_addr
:
$ ./init.rb id somename someaddr
Методы классов
Каждый метод начинается с ключевого слова def
, а имена методов указываются строчными буквами.
Завершается метод ключевым словом end
. Например:
class Sample def function statement 1 statement 2 end end
Тут statement 1
и statement 2
являются операторами – телом метода function
класса Sample
.
Продолжение – часть 3: переменные, константы и литералы.