class NewClass
def initialize(name)
@name = name
end
public
def public_method
puts "public"
end
private
def private_method
@private_value = 1
end
end
class NewClass
def initialize(name)
@name = name
end
def name
@name
end
end
위 코드의 name
메소드를 attr_reader
를 이용해 한 줄로 작성 가능
리팩토링
class NewClass
attr_reader :name
def initialize(name)
@name = name
end
end
attr_reader
와 마찬가지로, 값 수정 역시 한 줄로 가능하다.
class NewClass
def name=(value)
@name = value
end
# 한 줄로 리팩토링
attr_writer :name
end
class NewClass
attr_accessor :name
# initialize 메소드
end
모듈: 클래스에서 사용할 기능들(메소드)을 제공하기 위해 만듦.
다양한 클래스에서 사용가능한 메소드를 제공하는 라이브러리.
puts Math::PI
루비에는 Math::PI
와 Circle::PI
가 있으므로, 혼동하지 않기 위해 네임스페이스
를 지정해준다(Math::
require 'date'
class Angle
include Math
def initialize(radians)
@radians = radians
end
def cosine
cos(@radians)
end
end
이렇게 작성할 경우, Math::
라고 네임스페이스를 작성하지 않고 모듈의 메소드?를 사용 가능.