Ruby 인스턴스 변수, 작동 방식 및 유용한 이유에 대해 배우고 싶다면
올바른 위치에 있습니다!
첫 번째 질문...
인스턴스 변수란 무엇인가요?
Ruby 프로그래밍 언어에서 인스턴스 변수는 @
로 시작하는 변수 유형입니다. 기호.
예 :
@fruit
인스턴스 변수는 객체 지향 프로그래밍(OOP)의 일부로 사용되어 객체에 데이터를 저장할 수 있는 개인 공간을 제공합니다.
객체는 :
- 할 일
- 알아보기
방법은 일을 일으키고 일을 합니다.
인스턴스 변수는 데이터를 저장하고 알고 있습니다.
예 :
Fruit
이 있는 경우 어떤 종류의 과일인지, 색깔, 무게 등을 알고 싶을 수도 있습니다.
이러한 모든 속성은 인스턴스 변수가 됩니다.
@color
좋아요 , @type
, @weight
.
다음 :
코드 예제를 살펴보겠습니다.
Ruby 인스턴스 변수 정의 및 사용 방법
클래스 내에서 인스턴스 변수를 정의합니다.
예 :
CoffeeMachine
이 있다고 가정해 보겠습니다. 수업.
커피 머신에는 물이 필요하므로 사용 가능한 물의 양을 알고 싶을 수 있습니다.
할 수 있습니다 :
class CoffeeMachine def initialize @water = 100 end end
이 @water
우리의 인스턴스 변수입니다.
100
할당 @water
로 초기 값으로.
지금 :
make_coffee
가 있다면 방법으로 탱크에 남아 있는 물의 양을 줄일 수 있습니다.
class CoffeeMachine def initialize @water = 100 end def make_coffee @water -= 10 end end
모든 CoffeeMachine
생성한 개체(new
사용) )에는 @water
에 대한 고유한 개인 값이 있습니다. .
이해가 되지 않나요?
실제 커피 머신이 10개 있다면 각각의 수위가 다르기 때문입니다.
이것이 우리가 인스턴스 변수를 사용하는 이유입니다!
인스턴스 변수에 액세스하는 방법
인스턴스 변수는 현재 값을 읽을 수 없다면 별로 유용하지 않을 것입니다.
@
로 인스턴스 변수 값을 읽을 수 있습니다. 구문.
좋아요 :
class CoffeeMachine def initialize @water = 50 end def print_water_level puts "Water Level: #{@water}" end end machine = CoffeeMachine.new machine.print_water_level # Water Level: 50
print_water_level
메소드는 @water
를 사용합니다. 값을 인쇄합니다.
속성 접근자 사용
외부에서 인스턴스 변수에 액세스할 수 없음을 알 수 있습니다. 수업.
그것은 의도적으로 설계된 것입니다!
다른 Ruby 개체와 마찬가지로 개체의 데이터가 외부 세계로부터 보호되는 "캡슐화"라고 합니다.
제 말은 다음과 같습니다. :
machine = CoffeeMachine.new machine.water # NoMethodError: undefined method `water' for #<CoffeeMachine:0x2d0a530> machine.@water # SyntaxError: unexpected tIVAR, expecting '('
경우에 따라 이를 허용할 수 있습니다.
외부에서 사용할 수 있도록 개체의 데이터에 대한 창을 열 수 있습니다.
한 가지 방법 :
class CoffeeMachine def initialize @water = 100 end def water @water end end machine = CoffeeMachine.new machine.water # 100
특별한 것은 없습니다.
액세스할 수 있는 내부에서 값을 반환합니다. .
또 다른 옵션은 속성 판독기를 사용하는 것입니다.
예 :
class CoffeeMachine attr_reader :water def initialize @water = 100 end end machine = CoffeeMachine.new machine.water # 100
이전과 동일합니다.
유일한 차이점은 Ruby가 당신을 위해 열심히 일하고 water
를 생성한다는 것입니다. 방법.
알아야 할 사항
문제가 발생하지 않도록 인스턴스 변수에 대해 기억해야 할 몇 가지 사항입니다.
메모하기 :
- 정의되지 않은 인스턴스 변수는 항상
nil
을 반환합니다. - 인스턴스 변수는
initialize
에서 생성할 필요가 없습니다. 방법이지만 이것이 초기 값을 제공하는 방법입니다. instance_variable_get
과 같은 인스턴스 변수에 액세스하는 고급 방법이 있습니다. , 하지만 이것들을 피해야 합니다
Btw, 인스턴스 변수 목록을 얻을 수 있습니다.
좋아요 :
machine.instance_variables # [:@water]
도움이 될 것입니다 🙂
한 가지 더 :
Rails에서 인스턴스 변수(예:@books
), 컨트롤러와 보기 간에 데이터를 공유하는 데 사용됩니다.
하지만 자신의 수업에 대해서는 여전히 정상적으로 사용할 수 있습니다.
요약
Ruby 인스턴스 변수에 대해 배웠습니다! @
로 시작하는 일종의 변수 symbol &클래스 내부에서 데이터를 저장할 장소를 제공하는 데 사용됩니다.
지금 연습하는 것을 잊지 말고 코드 예제를 사용하여 자신만의 코드를 만들어 보세요.
읽어주셔서 감사합니다.