Ruby (4)

lakewood·2021년 1월 1일
0

ruby

목록 보기
4/14
post-custom-banner

변수와 상수

변수의 선언은

변수 = 값

와 같이 대입하면 됩니다.

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
profile
versatility (ode
post-custom-banner

0개의 댓글