┝ 개발 언어/┝ ruby

[ruby] 변수 앞의 @

홍호나 2023. 7. 10. 15:58

`@`는 Ruby에서 인스턴스 변수를 나타내는 접두사입니다. 인스턴스 변수는 객체의 수명 동안 유지되는 변수로, 객체 내에서 다른 메소드에서도 공유되는 데이터를 저장하는 데 사용됩니다.

 

def config
	@config ||= Config.new
end


위의 코드에서 `@config`은 인스턴스 변수를 나타냅니다. `config` 메소드는 해당 인스턴스 변수에 접근하고, 값이 존재하지 않는 경우에만 `Config.new`로 초기화하는 로직을 가지고 있습니다. 이렇게 인스턴스 변수를 사용하는 것은 `config` 메소드를 여러 번 호출할 때마다 매번 새로운 `Config` 인스턴스를 생성하지 않고, 이미 생성된 인스턴스를 재사용하기 위한 목적으로 사용될 수 있습니다.

예를 들어, 아래와 같이 `config` 메소드를 호출할 때:

obj = MyClass.new
config1 = obj.config  # Config 인스턴스 생성
config2 = obj.config  # 이미 생성된 Config 인스턴스 반환


첫 번째 호출에서 `@config`은 `nil`이므로 `Config.new`를 통해 새로운 `Config` 인스턴스를 생성합니다. 그러나 두 번째 호출부터는 이미 생성된 `Config` 인스턴스인 `config1`을 반환합니다. 이렇게 함으로써 같은 인스턴스를 여러 번 사용하여 중복 생성을 피하고, 메모리 사용을 최적화할 수 있습니다.

따라서 `@`는 Ruby에서 인스턴스 변수를 구분하는 데 사용되는 특별한 접두사입니다. 이 변수는 객체 내에서 다른 메소드에서 공유되며 객체의 상태를 유지하는 데 사용됩니다.