변수의 선언은
변수 = 값
와 같이 대입하면 됩니다.
x = 2
는 x라는 변수에 2의 값을 대입한 것 입니다.
변수의 종류에는
가 있습니다.
지역 변수는 위의 식 x = 2 와 같이 선언하면
지역 변수로써 선언한 것 입니다.
예시) $foo = 'foo in top level'
전역 변수는 $을 붙여서
예시) $foo = 'foo in whole'
과 같이 선언하면 됩니다.
인스턴스 변수는 @ 1개를 붙여서
예시) @foo = 'foo in instance'
과 같이 선언하면 됩니다.
클래스 변수는 @@ 2개를 붙여서
예시) @@foo = 'foo in class'
과 같이 선언하면 됩니다.
지역변수는 자신이 선언된 스코프에서만 참조가 가능합니다.
hello = "World"
def call_hello
puts hello
end
def call_hello 는 메소드 선언을 의미합니다.
call_hello 함수(메소드)를 호출하면 오류를 발생시킵니다.
그 이유는 함수 스코프 밖에서 선언된 hello를 호출 했기 때문입니다.
전역변수로 선언해줘야 call_hello 안에서 hello에 접근할 수 있습니다.
hello = "World"를 $hello = "World"로 변경하고
puts hello를 puts $hello로 변경
$hello = "World"
def call_hello
puts $hello
end
출력은
World
와 같습니다.
인스턴스 변수는 클래스 내에 있는 메소드 내에서만 불러올 수 있습니다.
class Ruler
def get_length
puts @hello
end
def set_length
@hello = 1
end
end
즉 get_length와 set_length 메소드 안에서만 접근이 가능합니다.
클래스 변수는 인스턴스 변수처럼 클래스 내부의 메서드 내부로 제한되지 않고
클래스 내에 어디서든 접근이 가능합니다.
class Ruler
@@hello = 1
def get_length
puts @@hello + 1
end
puts @@hello
end