루비에서 attr_accessor란 무엇인가요?

루비에서 attr_accessor를 이해하는 데 어려움을 겪고 있습니다. 누군가 설명해 주실 수 있나요?

질문에 대한 의견 (3)
해결책

39, s say you have a 클래스 '사람' let&.

class Person
end

person = Person.new
person.name # => no method error

분명히 우리는 결코 정의된 메서드를 '이름'. # 39 의 let& 그렇잖아요.

class Person
  def name
    @name # simply returning an instance variable @name
  end
end

person = Person.new
person.name # => nil
person.name = "Dennis" # => no method error

아하, 우리는 우리가 할 수 있으나, 그 이름을 읽을 수 있는 doesn& # 39, t 짓궂군요 이름을 지정합니다. 이들은 서로 다른 두 가지 방법. 전 호출됨 판독기에서 rmw 호출됨 및 작성기에. 그래서 우리는 아직 # 39, s, t # 39 didn& 만듭다 작성기에 let& 그렇잖아요.

class Person
  def name
    @name
  end

  def name=(str)
    @name = str
  end
end

person = Person.new
person.name = 'Dennis'
person.name # => "Dennis"

멋집니다. 이제 읽기 및 쓰기 '와' 인스턴스 변수를 사용하여 판독기에서 @name 작성기에 방법. 그러나, 이것은 그렇게 자주 쓰는 시간을 낭비하지 때마다 왜 이러한 방법은? We can do it 간편해집니다.

class Person
  attr_reader :name
  attr_writer :name
end

이 반복적인 얻을 수 있다. 둘다 판독기에서 때 및 작성기에 액세서의 됩니다!

class Person
  attr_accessor :name
end

person = Person.new
person.name = "Dennis"
person.name # => "Dennis"

같은 방식으로 작동합니다! 및 배리랑: 인스턴스 변수 '사람' 의 객체는 @name 때와 마찬가지로 우리는 그것을했다 수동으로 설정할 수 있도록 다른 방법을 쓸 수 있다.

class Person
  attr_accessor :name

  def greeting
    "Hello #{@name}"
  end
end

person = Person.new
person.name = "Dennis"
person.greeting # => "Hello Dennis"

39 의 that& 거잖나. 이해하기 위해 attr_reader attr_writer attr_accessor '방법' ',' '및' 다른 방법, 책 읽기, 루비, 실제로 발령합니다 당신꺼에요 답을 docs.

해설 (32)

attr_accessor메소드일 뿐입니다. (링크에서 생성된 메서드 쌍을 보면 작동 방식에 대한 자세한 내용을 확인할 수 있으며, 튜토리얼에서 사용 방법을 확인할 수 있습니다.)

비결은 'class'가 Ruby에서는 '정의'가 아니라(C++ 및 Java와 같은 언어에서는 '정의일 뿐'입니다) '평가하는 표현식'이라는 점입니다. 이 평가 중에 현재 클래스를 수정하는 attr_accessor 메서드가 호출되며, 이때 self는 현재 클래스 객체인 self.attr_accessor라는 암시적 수신자를 기억하세요.

attr_accessor`와 친구들이 필요한 이유는 바로 이것입니다:

  1. 루비는 Smalltalk와 마찬가지로 인스턴스 변수를 해당 객체에 대한 메서드1 외부에서 액세스하는 것을 허용하지 않습니다. 즉, 인스턴스 변수는 자바나 파이썬에서 흔히 볼 수 있는 x.y 형식으로 접근할 수 없습니다. Ruby에서 y는 항상 전송할 메시지(또는 호출할 메서드)로 간주됩니다. 따라서 attr_* 메서드는 동적으로 생성된 메서드를 통해 인스턴스 @변수 액세스를 프록시하는 래퍼를 생성합니다.

  2. 상용구는 짜증난다

몇 가지 세부 사항을 명확하게 설명해 드렸기를 바랍니다. 즐거운 코딩 되세요.


해설 (2)

attr_accessor '는' (as @pst 밝혔다) 그냥 메서드입니다. What it 은 많이 만드는 방법을 사용할 수 있습니다.

그래서 이 코드 위치:

class Foo
  attr_accessor :bar
end

이 코드를 것과 같습니다.

class Foo
  def bar
    @bar
  end
  def bar=( new_value )
    @bar = new_value
  end
end

이러한 종류의 에서 루비 교도관님도요 방법을 쓸 수 있습니다.

class Module
  def var( method_name )
    inst_variable_name = "@#{method_name}".to_sym
    define_method method_name do
      instance_variable_get inst_variable_name
    end
    define_method "#{method_name}=" do |new_value|
      instance_variable_set inst_variable_name, new_value
    end
  end
end

class Foo
  var :bar
end

f = Foo.new
p f.bar     #=> nil
f.bar = 42
p f.bar     #=> 42
해설 (3)

attr_accessor`는 매우 간단합니다:

attr_accessor :foo

에 대한 바로 가기입니다:

def foo=(val)
  @foo = val
end

def foo
  @foo
end

객체에 대한 게터/세터에 불과합니다.

해설 (2)

기본적으로 루비에는 없는 공개적으로 액세스 가능한 데이터 속성을 가짜로 만듭니다.

해설 (3)

Setter 와 getter 메서드 정의하는 방법은 바로 인스턴스 변수. 예를 들어 구축상의 다음과 같습니다.

def self.attr_accessor(*names)
  names.each do |name|
    define_method(name) {instance_variable_get("@#{name}")} # This is the getter
    define_method("#{name}=") {|arg| instance_variable_set("@#{name}", arg)} # This is the setter
  end
end
해설 (1)

간단한 설명 없이 코드

위의 코드를 사용하는 대부분의 대답. 이같은 설명은 시도_횟수 사용하지 않고, 이 같은 답변을 통해 / story:

    • 비밀들입니다 미국 중앙정보국 (cia) 의 내부 외부에 액세스할 수 없습니다.
  • 39 의 Let& 상상하는 상행담관염이라고 비밀 장소: 미 중앙정보국 (cia). 현재 미 중앙정보국 (cia) 안의 사람들이 아무도 what& # 39 의 별도로 미 중앙정보국 (cia). 즉, 외부 사람들이 중앙정보국 (cia) 의 모든 정보를 액세스할 수 없습니다. 하지만 비밀 조직 때문에 it& # 39 에 내장된 no good, 외부와 완전히 특정 정보를 이용할 수 있는 모든 것을 알아야 한다 - 단 미국 중앙정보국 (cia) 의 과정: 예를 들어 미국 중앙정보국 (cia) 국장은 이 부서에 는 다른 모든 정부 부처에 비해 얼마나 환경 친화적인 상술합니다. 다른 정보: 예를 들어, 이러한 유형의 창조하셨노 아마도 이라크나 아프가니스탄 근무를 - 오른길로 그 비밀 테러 준비를 위해 비밀을 거주하리라 다음 150 년.

  • 39 미국 중앙정보국 (cia) 의 경우, re 위부의 you& 액세스하려면 카으바를 공개할 수 있다는 정보를 사용할 수 있습니다. 미 중앙정보국 (cia), 즉, 정보를 액세스할 수 있지만 &quot cleared&quot 사용하거나 평가받는다.

  • 미국 중앙정보국 (cia) 이 있는 정보를 사용할 수 있게 하는 일반 대중에게 위부의 미 중앙정보국 (cia) 이라고 부른다. attributes.

  • Attributes:* 의미를 읽기 및 쓰기
  • 미 중앙정보국 (cia) 의 경우, 대부분의 속성은 only&quot 검토완료 ";). 즉, , 외부 파티였죠 경우에는 cia 국장은 미 중앙정보국 (cia), ask: &quot 누구이뇨? &quot 수 있습니다. 그리고 올바른 답을 얻을 수 있습니다. 하지만, 어떻게 처리해야 &quot 너희는너희가 cannot 검토완료 only&quot. 미 중앙정보국 (cia) 특성을 변경하려면 변화가 있다. 예를 들어 갑자기 decide delaymins 전화를 사용할 수 있도록 할 수 있는 패리스 힐튼이 디렉터, 킴 카다시안 커맨더 인 치프.

  • 만약 속성뿐 제공했음 너회가 &quot write"; 액세스 할 수 있는 그런 경우에도 수정하시기 스케쳐내 조교하실 바깥쪽인지가. 그렇지 않으면 할 수 있는 유일한 읽어옵니다.

즉, 또는 그, 그렇지 않으면 할 수 있도록 관련 접근자에 수정하시기 조직에게 여부에 따라 접근자가 읽고 쓸 수 없는 외부 명 접근자에.

    • 클래스 내에 객체에는 서로 쉽게 액세스할 수 있습니다
      • 인사이드라면 반면 조교하실 경우 이미 미 중앙정보국 (cia), 그럼 쉽게 할 수 있기 때문에 이 정보는 cia 요원인 up your 호출하십시오 카불에서 몸에요 너희에게 이미 쉽게 접근할 수 있다. # 39 미국 중앙정보국 (cia), re 신앙이니라 you& 됩니다 바깥쪽인지가 액세스하면 제공되지 않습니다. 누군지 알 수 없습니다 (읽기 access), 그들은 그들의 임무 (쓰기 액세스) 및 변경할 수 없습니다.

정확한 com/go/4e6b330a_kr 액세스하려면 속성 및 메서드, 그 안에 자신의 능력을 클래스와 같은 것입니다. 하스! 내가 할 수 있고, 모든 질문에 하나님께용서를 desktopplatforms 바란다 "고 해명했다.

해설 (4)

Setter 와 getter 메서드 개념, OOP 익숙하다면 익숙한 합니다. 초기의 attr_accessor 높여줍니까 루비.

    • 의 Setter 와 Getter 일반적인 방식으로
class Person
  def name
    @name
  end

  def name=(str)
    @name = str
  end
end

person = Person.new
person.name = 'Eshaan'
person.name # => "Eshaan"
    • 세터 방법
def name=(val)
  @name = val
end
    • Getter 메서드
def name
  @name
end
    • 및 Setter 메서드에 루비 킬러.
class Person
  attr_accessor :name
end

person = Person.new
person.name = "Eshaan"
person.name # => "Eshaan"
해설 (1)

물론 내가 이 문제를 다소 긴 이 질문의 답을 쓴 바 있다. 하지만 이에 대한 자세한 설명, 누구나 답을 이미 몇 가지 큰 도움이 될 수 있는 제 대답은 좋겠다

메서드로부터 초기화하지

데이터 오브젝트 생성 시 인스턴스입니다 초기화하지 설정할 수 있는 것보다 인스턴스입니다 그녀들을 위해 다른 줄에 코드에 새로운 클래스의 인스턴스를 만들 때마다.

class Person

  def initialize(name)
    @name = name
  end

  def greeting
    "Hello #{@name}"
  end
end

person = Person.new("Denis")
puts person.greeting

위의 코드에서 사용하는 방법 중 이름이 "데니스" 우리는 설정을 통해 초기화하지 반군지역 데니스 초기화하지 매개변수입니다. 만약 우리가 이름을 설정할 수 없는 게 우리가 할 수 있는 방법을 초기화하지 승인하십시오 다음과 같습니다.

class Person
  attr_accessor :name

  # def initialize(name)
  #     @name = name
  # end

  def greeting
    "Hello #{name}"
  end
end

person = Person.new
person.name = "Dennis"
puts person.greeting

위의 코드에서 (person.name) 를 사용하여 메서드를 호출하여 설정했습니다 이름 값을 설정하는 대신, 세터 attr_accessor 빛위에 초기화하지 객체에는.

둘 다 "방법" 이 일을 수행하는 코드는 초기화하지 고객이시간과 수 있게 해 줍니다.

이거밖에 초기화하지 있다. 방법으로 초기화하지 전화를 걸 수 없습니다. 실제로 내려받습니다 값을 사용해야 할 때 게터 인스턴스를 객체 및 세터 (attr_reader (get), attr_writer (설정), 그리고 attr_accessor (모두)). 자세한 내용은 아래 사람들에 대해.

게터, 세터 (, attr_writer attr_reader attr_accessor)

게터, attr_reader: 전체 목적은 특정 인스턴스 변수 값을 되돌려줍니다 getter 것입니다. Dell. 아래의 예제 코드를 kingdome. seattle. 여기있을 알 수 있습니다.

class Item

  def initialize(item_name, quantity)
    @item_name = item_name
    @quantity = quantity
  end

  def item_name
    @item_name
  end

  def quantity
     @quantity
  end
end

example = Item.new("TV",2)
puts example.item_name
puts example.quantity

메서드 호출 중인 코드에서 그들위에 "item_name" 와 "양" 을 인스턴스입니다 항목설명프로세서 "예". 이 "는 example.item_name" 와 "에스타 플레윈촨티티" 반환되므로 (또는 "get") 의 값은 "예" 로 전달된 매개변수입니다 그들을 및 디스플레이 화면에.

다행히도 이 방법을 쓸 수 있게 하는 더 근본적인 문제가 있는 루비 코드 간단히. 이 attr_reader 메서드입니다. 아래 코드는 참조.

class Item

attr_reader :item_name, :quantity

  def initialize(item_name, quantity)
    @item_name = item_name
    @quantity = quantity
  end

end

item = Item.new("TV",2)
puts item.item_name
puts item.quantity

이 구문은 작동됨 똑같이 6 만 이 코드는 수 있게 해 줍니다. 이매진 했을 경우, 5 개 항목 클래스 스테이드 있기 때문인 것으로 풀이된다. 이 코드는 기절해있는 빠르게 얻을 수 있을 것 "이라고 말했다.

세터, attr_writer: 처음에는 어떤 초과 me up 할당 메서드를 사용하여 동일한 기능을 수행할 수 있는 것은 내 눈을 듯했다 초기화하지 메서드입니다. 내가 내 이해를 바탕으로 아래 차이를 설명한다.

앞서 설명한 것처럼, 이 방법을 사용하면 초기화하지 인스턴스입니다 계시노라 시 개체를 객체에는 값을 설정할 수 있습니다.

하지만 와일드링이 후에, 하고 싶은 값을 설정합니다 인스턴스입니다 창조되었으되 또는 변경하십시오 후에는 초기화되었습니다? 이 경우를 약간만이라도 세터 방법을 사용할 수 있습니다. 즉 말한다. "Set" 특정 상태에서 너회가 필요없다우 attr_writer 방법을 사용하는 경우 된다.

아래 코드는 예는 세터 방법을 사용하여 가치를 너희가운데 item_name 엔드입니다 인스턴스에서는 항목 클래스. 우리가 계속 사용할 수 있게 내려받습니다 attr_reader 디이브이 getter 메서드 및 인쇄 그 값이 화면에 만일의 사태에 대비해 운영까지도 코드를 테스트하려면 자체적으로.

class Item

attr_reader :item_name

  def item_name=(str)
    @item_name = (str)
  end

end

아래 코드는 attr_writer 사용 예는 우리에게 다시 한번 우리 코드 및 저장 줄여집니다 하게하면서요.

class Item

attr_reader :item_name
attr_writer :item_name

end

item = Item.new
puts item.item_name = "TV"

아래 코드는 는 반복 초기화하지 의 값을 설정할 수 있는 uxfs 위에 객체에는 빛위에 계시노라 item_name 초기화하지 사용하고 있습니다

class Item

attr_reader :item_name

  def initialize(item_name)
    @item_name = item_name
  end

end

item = Item.new("TV")
puts item.item_name

attr_accessor: 모두 한 번 더 선) 의 기능을 수행하는 attr_reader 및 attr_writer 절약하는 코드.

해설 (0)

부품 뭐한테 루비아츠 / 프로그래머 (나 같은) 는 새로운 인간으로 생각한다.

39, t, 왜 &quot can& 그냥 인스턴스 속성을 감안할 때 (예를 들어, 이름) 와 있는지 알 수 있는 속성 값을 열거하십시오 &quot 급습, all in one?

조금 더 일반화 클릭할 수 있지만, this is how it for me.

주어진:

class Person
end

우리는 그 이름을 , t # 39 로 정의된 haven& 생각하신거야 또는 다른 특성을 가질 수 있는 일이 아니다.

만일 그런 다음:

baby = Person.new

.and 전달자로써 시도하시겠습니까 그 이름.

baby.name = "Ruth"

, 오류 때문에 루비랜드 우리가 받을 수 있는 사람이 할 수 있는 객체의 클래스를 연결된 &quot name&quot, 또는 일이 아니다. . 아직!

그러나 우리는 모든 것을 사용할 수 있는 방안으로 말하도다 &quot 서버리스 (이전 답변 참조) 한 클래스 ('baby') , 인스턴스입니다 & # 39 라는 속성을 가지고 있습니다,, # 39 name& 그리하매 하나님이 아니라 구문 가져오고 설정하는 방법은 그 이름을 가지고 있지만, 우리가 할 공감하는 so.&quot.

물론 일반 ᄀ형강, 그러나 나는 이 질문을 약간 다른 등을 통해 다시 희망을 발견한 사람이 그 다음 인스턴스에서는 클래스용 진격을 이 이렇게 하면 어떨까.

해설 (0)

간단히 말해 setter 와 getter 정의하시려면 클래스에 대한 것입니다.

참고로

attr_reader :v is equivalant to 
def v
  @v
end

attr_writer :v is equivalant to
def v=(value)
  @v=value
end

그래서

attr_accessor :v which means 
attr_reader :v; attr_writer :v 

에키바란트 setter 와 getter 클래스에 대한 정의할 수 있다.

해설 (0)

다른 방법으로 분석할 수 있는 것은 이해할 수 있도록 함으로써 '' attr_accessor 오류 코드 않습니다.

예:

class BankAccount    
  def initialize( account_owner )
    @owner = account_owner
    @balance = 0
  end

  def deposit( amount )
    @balance = @balance + amount
  end

  def withdraw( amount )
    @balance = @balance - amount
  end
end

다음 방법을 사용할 수 있습니다.

$ bankie = BankAccout.new("Iggy")
$ bankie 
$ bankie.deposit(100)
$ bankie.withdraw(5)

다음 방법을 던지는 오류:

$ bankie.owner     #undefined method `owner'... 
$ bankie.balance   #undefined method `balance'...

, '와' 균형 '이 아닌' 소유자에게도 메서드입니다 있지만, 엄밀히 말해 특성입니다. '정의' 와 'def 밸런싱할 소유자에게도 뱅크스카운트 클래스 없는'. 만약 그렇다면, 그 아래 두 개의 명령을 사용할 수 있습니다. 그러나 그 두 가지 방법을 aren& # 39, t 할 수 있다. 그러나 # 39 you& 것처럼 속성뿐 액세스하면 수 있습니다; d '를 통해 액세스하면 메서드입니다 attr_accessor'!! 따라서 단어 'attr_accessor' . 속성. 액세서의. It 액세스하며 때와 같은 속성을 액세스하면 메서드입니다.

',' 추가 attr_accessor 밸런싱할 소유자 읽기 및 쓰기 '균형' 와 '주인의 &quot method&quot 수 있습니다;;). 이제 마지막 2 방법을 사용할 수 있습니다.

$ bankie.balance
$ bankie.owner
해설 (0)

단순히 '에서' 킬러 '와' setter '방법' 속성 액세서의 지정된 속성

해설 (0)

Eventtest 명명된 인스턴스를 만드는 있는 속성용 엔드입니다 모듈에서는 이름님은 symbol.id2name, 변수 (@name) 와 .해당 access method 를 읽을 수 있습니다. 만들고 메서드입니다 호출됨 name = 설정할 수 있는 속성.

module Mod
  attr_accessor(:one, :two)
end
Mod.instance_methods.sort   #=> [:one, :one=, :two, :two=]
해설 (0)

두 개의 사용 가능한 방법을 사용하면 액세서의 lc-fc attr_accessor 요약하십시오 속성은 수.

자바 가상 머신 (jvm) 에 전화를 받는 등 게터 및 세터.

그래서 그냥 좋은 사례가 될 많은 답변 표시한 I& # 39 m, 개요.

the_attribute\

the_attribute =\

옛날 루비 docs 해시 태그를 # 고말은 메서드입니다. 클래스 이름을 접두어입니다 포함할 수도 있습니다.

My_method myclass

해설 (0)

나는 그냥 한ᆞ미 다음 불확실성 이해하는 새로운 루비 · 했다. 다른 사람이 아웃해야 미래에 도움이 됩니다. 결국 이는 위에서 언급한 것과, 여기서 2 기능 (def 마이바르, 데프 마이바르 =) 를 얻을 수 있지만, 이러한 방법은 모두 암시적으로 @myvar 액세스하면 무시됨 각 지역 선언.

class Foo
  attr_accessor 'myvar'
  def initialize
    @myvar = "A"
    myvar = "B"
    puts @myvar # A
    puts myvar # B - myvar declared above overrides myvar method
  end

  def test
    puts @myvar # A
    puts myvar # A - coming from myvar accessor

    myvar = "C" # local myvar overrides accessor
    puts @myvar # A
    puts myvar # C

    send "myvar=", "E" # not running "myvar =", but instead calls setter for @myvar
    puts @myvar # E
    puts myvar # C
  end
end
해설 (0)

# 액세서의 속성 및 메서드

속성은 외부에서 https://learning. 구성 요소를 클래스 개체. 그들은 대부분의 다른 프로그래밍 언어에서 속성를) 으로 알려져 있다. 그 값을 사용하여, object_name.attribute_name. 같이 joyon. notation&quot &quot 액세스할 수 있습니다. 파이썬, 루비, 몇 개 국어로 달리 직접 액세스되기 위부의 객체에는 인스턴스 변수 스크램블된 허용하지 않습니다.

class Car
  def initialize
    @wheels = 4  # This is an instance variable
  end
end

c = Car.new
c.wheels     # Output: NoMethodError: undefined method `wheels' for #

위의 예에서 캜 인스턴스입니다 (객체) 차 구분된다. 외부에서 객체에는 바퀴고요 인스턴스 변수 값을 시도했을 읽는 데 실패했다. 무슨 일이유 시도한 것은 루비 호츨 메서드입니다 release. 바퀴고요 있지 않지만, 이 방법 내에서 캜 객체에는 정의했습니다. 한마디로 호츨 메서드입니다 release. attribute_name 오브젝트 내의 object_name.attribute_name 시도합니다. 외부에서 구현하십시오 바퀴고요 변수 값을 액세스하려면 우리가 할 수 있는 방법, 그 때 그 이름을 인스턴스 변수 값을 되돌려줍니다 불렀으매. # 39 의 불렀으매 that& 충족되었으며 액세서의 메서드입니다. [일반, 일반적인 프로그래밍 컨텍스트로 인스턴스 변수는 액세스하려면 외부에서 객체인지 구현할 수 있는 방법, 소트트웨어용 액세서의 getter 및 할당 메서드를. A class 에서 정의된 변수의 값을 getter 통해 읽을 수 있고 외부에서 세터 외부에서 기록되었으므로 수 있다.

다음 예에서는, 우리는 getter 및 할당 메서드를 추가되든지 차에 클래스용 바퀴고요 액세스하려면 외부에서 가변적입니다 객체에는. 루비 way&quot &quot 아닙니다;; 세터 게터 및 정의. 이를 설명하기 위해 어떤 역할만 getter 및 할당 메서드를 책임질래.

class Car
  def wheels  # getter method
    @wheels
  end

  def wheels=(val)  # setter method
    @wheels = val
  end
end

f = Car.new
f.wheels = 4  # The setter method was invoked
f.wheels  # The getter method was invoked
# Output: => 4

위의 예제 코드를 작성하는 데 사용되는 작동됨 및 이와 유사한 방법으로 흔히 getter 및 세터 '로 끝난다. 그러나, 루비 이렇게 간단한 방법을 제공합니다. 세 가지 기본 제공 및 방법, attr_writer attr_reader 불렀으매 attr_acessor. 이 방법을 쓸 수 있도록 만드는 attr_reader 외부에서 attr_writer 판독값 인스턴스 변수 및 attr_acessor 읽고 쓸 수 있습니다.

위의 예제를 다음과 같이 다시 쓰일 수 있다.

class Car
  attr_accessor :wheels
end

f = Car.new
f.wheels = 4
f.wheels  # Output: => 4

위의 예에서 바퀴고요 속성용 외부에서 객체에는 읽고 쓸 수 있는 것입니다. 대신 사용할 경우, 우리는 attr_reader 읽기 전용 attr_accessor 것 "이라고 했다. 만약 우리가 attr_writer 읽기 전용 사용할 것 "이라고 했다. 그 때 자신이 만든 '라는 세 가지 방법이 있지만, 스스로 세터 않습니다를 게터 의 setter 와 getter 메서드 및 우리를 위해. 동적으로 생성하는 방법, 다른 이들은 메서드입니다 (프로그래밍) # 39 의 불렀으매 that& 메타프로그래밍.

예를 들어, 첫 번째 (moray) 에 내장된 방법을 쓸 수 없는 Ruby& # 39 의 setter 와 getter 메서드 추가 코드는 필요한 경우에만 사용해야 합니다. 예를 들어, 또는 몇 가지 값을 계산 데이터를 검증할 필요가 있습니다 세터 메서드로부터 할당하기 전에 인스턴스 변수는.

액세스하려면 가능하다 (읽기 및 쓰기) 에서 인스턴스 변수 및 instance_variable_set 사용하여 위부의 객체에는 instance_variable_get 내장현 방법. 그러나 이는 정당한 거의 사용하지 않고, 보통 등 온갖 나쁜 아이디어 캡슐화 혼란을 초래할 수 있다는 점도 문제로 지적되고 있다.

해설 (0)

아이반. 많은 좋은 답변. 이것은 내 몇 센트 때문이다.

  • 'attr_accessor 우리에게 주는 간단한 방법' 이 (가) 의 정리 ( 건조한 ing ) 까지 리피팅 'getter 및 setter' 방법.

  • 좀 더 집중할 수 있게 먹어서나 비즈니스 로직과 세터 및 게터 걱정 없습니다.

해설 (0)
    • Attr_accessor 기본 데이터 액세스 기능을 통해 다른 파일을 다른 수준들과 기능입니다. 그래서 대개는 틀림없이 좋은 소식은, 루비 합칩니다 attr_writer attr_reader 또는 이 두 attr_accessor 함께 할 수 있습니다. 나는 내 갈 수 있기 때문에 더 좋은 방법을 생각하면 됩니다 라운드된 또는 다용성. 또한, 이 때문에 레일 염두에 두고 있는 그린 it for you in the end 뒤로를 않니다 제거됩니다. 그래서 이를 정리하면 다음과 같습니다. 더 이상 사용할 수 있기 때문에, 다른 두 틀렸다니까 오프하도록 attr_acessor don& # 39 는 특정, 이 모든 것을 닫히지만 액세서의 걱정할 필요 없다. 하지만 이건 더 일반적인 설명을 통해 그러니까말이야 me as a beginner.

ᄋ "이번 도움을 주었다.

해설 (0)