Slide 1

Slide 1 text

RUBY VARIABLE SCOPES

Slide 2

Slide 2 text

SCOPES • Local Variables • Instance Variables • Class Variables • Class Instance Variables • Global Variables • Constants

Slide 3

Slide 3 text

LOCAL VARIABLES • “normal” • x = 25 • local to a method/block/class declaration • goes away when its scope closes

Slide 4

Slide 4 text

INSTANCE VARIABLES • prefixed with `@` • @name = ‘Miha’ • available inside an instance scope • each instance has a separate value

Slide 5

Slide 5 text

CLASS VARIABLES • prefixed with `@@` • @@gears = 5 • available inside a class and instance scope • same for all instances • same for superclass and subclasses

Slide 6

Slide 6 text

CLASS VARIABLES EXAMPLE class Polygon @@sides = 10 def self.sides @@sides end end puts Polygon.sides # => 10 class Triangle < Polygon @@sides = 3 end puts Triangle.sides # => 3 puts Polygon.sides # => 3

Slide 7

Slide 7 text

CLASS INSTANCE VARIABLES • classes are objects too • prefixed with `@` • @cards = 52 • available anywhere inside a class scope • NOT same for superclass and subclasses

Slide 8

Slide 8 text

CLASS INSTANCE VARIABLES EXAMPLE class Polygon @sides = 8 def self.sides @sides end def sides @sides end end puts Polygon.sides # => 8 puts Polygon.new.sides # => nil class Triangle < Polygon @sides = 3 end puts Triangle.sides # => 3 puts Polygon.sides # => 8

Slide 9

Slide 9 text

GLOBAL VARIABLES • prefixed with `$` • $HOME = ‘Ljubljana’ • should be used sparingly • available everywhere • can be traced

Slide 10

Slide 10 text

CONSTANTS • begin with a capital letter • upper snake case by convention • I_AM_A_CONSTANT = 25 • supposed to remain constant

Slide 11

Slide 11 text

CONSTANTS EXAMPLE [1] pry(main)> A_CONST = 10 => 10 [2] pry(main)> A_CONST = 20 (pry):50: warning: already initialized constant A_CONST (pry):49: warning: previous definition of A_CONST was here => 20 [3] pry(main)> A_CONST => 20

Slide 12

Slide 12 text

THANKS