AR삽질러

Ruby アクセス メソッド 본문

Ruby/Ruby-日本語

Ruby アクセス メソッド

아랑팡팡 2023. 12. 19. 10:58
728x90

 

Ruby アクセス メソッド

 

アクセス メソッド

 - インスタンス変数の値を読み書きするメソッドのこと

 

例題1

 - インスタンス変数@nameを、クラスの外部から参照したい。

class Car
    def initialize(name)
        @name = name
    end

    def hello
        puts "Hello! I am #{@name}"
    end

    def name
        @name
    end
end

car = Car.new('Kitt')
car.hello
# car.name
puts car.name

 

initialize Method : クラスの生成者で 'Car'オブジェクトが生成される時に呼ぶ出されます。

hello Method : name を受けてインスタンス変数 @name に割り当てる

name Method : @name インスタンス変数の値を 返還するメソッド

 

 

例題2

 - インスタンス変数@nameの値を、クラスの外部から書き換えたい。

class Car
    def initialize(name)
        @name = name
    end

    def hello
        puts "Hello! I am #{@name}"
    end

    def name
        @name
    end

    def name=(value)
        @name = value
    end
end

car = Car.new('Kitt')
car.hello
# car.name
puts car.name
# car.@name = 'AR'
car.name = 'AR'
puts car.name

 

name=(value) : Rubyで提供する、 書き込み専用アクセスメソッドと同様の役割を果している。

 


 

アクセス メソッド

 - Rubyではattr_reader、attr_writer、attr_accessorメソッドを使用して簡単に読み取り、書き込み、読み取り/書き込みアクセスメソッドを作成できる。
 - attr_readerは読み取り専用アクセスメソッドを生成します(例:nameメソッド)。
 - attr_writerは書き込み専用アクセスメソッドを生成します(例:name=メソッド)。
 - attr_accessorは読み取りと書き込みの両方が可能なアクセスメソッドを生成します。

 

 - attr_accessorメソッド

 - インスタンスメソッドを開発者が書かなくて良くなる。

class Car
    # attr_accessor :name
    # attr_reader :name
    attr_writer :name
    
    def initialize(name)
        @name = name
    end

    def hello
        puts "Hello! I am #{@name}"
    end

    # def name
    #     @name
    # end

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

car = Car.new('Kitt')
car.hello
# car.name
puts car.name
# car.@name = 'AR'
car.name = 'AR'
puts car.name

 

 

1) attr_reader

 - このメソッドは読み取り専用アクセスメソッドを生成する。 attr_readerで指定されたインスタンス変数は外部から値を得ることができるが、値を変更することはできない。

class Person
    attr_reader :name

    def initialize(name)
        @name = name
    end
end

person = Person.new("AR")
puts person.name

 

2) attr_writer

 - このメソッドは、書き込み専用アクセスメソッドを生成する。 attr_writerで指定されたインスタンス変数は外部から値を変更できるが、値を直接取得することはできない。

class Person
    # attr_reader :name
    attr_writer :name

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

# person = Person.new("AR")
# puts person.name
person = Person.new
puts person.name = "Bob"

 

 

3) attr_accessor

 - このメソッドは、読み取りと書き込みの両方を可能にするアクセスメソッドを生成する。 attr_accessorを使用すると、インスタンス変数に対するgetterとsetterメソッドの両方が生成される。

class Person
    # attr_reader :name
    # attr_writer :name
    attr_accessor :name

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

    def initialize(name)
        @name = name
    end
end

# person = Person.new("AR")
# puts person.name
# person = Person.new
# puts person.name = "Bob"
person = Person.new("AR")
puts person.name
person.name = "IT"
puts person.name

 

 

 

 

 

728x90
반응형
LIST