불필요한 경우에도 메서드 타겟을 명시 적으로 지정하는 가장 좋은 방법은 Ruby에 있습니까?Ruby에서 명시 적으로 기본 메소드 대상을 지정 하시겠습니까?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
불필요한 경우에도 메서드 타겟을 명시 적으로 지정하는 가장 좋은 방법은 Ruby에 있습니까?Ruby에서 명시 적으로 기본 메소드 대상을 지정 하시겠습니까?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
아니요, 스타일에 관한 질문 일뿐입니다.
명심해야 할 점은 setter 메서드에 항상 대상을 지정해야한다는 것입니다. 나는 그 자체가 나쁜 관행입니다 말할 것입니다하지만 당신은, 당신의 클래스의 방법으로 같은 이름의 지역 변수가 일어날 경우
foo_count = 4 #creates a local variable named foo_count and sets it to 4
self.foo_count = 4 #sends foo_count=(4) to self
동일한 규칙이 적용됩니다.
Chuck이 앞서 말했듯이, 개인적인 방법을 사용할 때, 그리고 그가 지적한 예외를 제외하고는 대부분 스타일에 관한 문제입니다. 개체 내에서 비공개 방법을 사용할 때마다 self.
업체를 떠나야합니다.
예는 :
class Tze
def meth2
meth1
end
def meth3
self.meth1
end
private
def meth1
puts "method 1 invoked"
end
end
이 Tze.new.meth2
를 호출 예상 출력을 생성; 그러나 Tze.new.meth3
을 호출하면 meth1
이 self.meth1
으로 호출되기 때문에 오류가 발생합니다.
세터는이 규칙에서 제외됩니다. 'x ='가 private 메소드 임에도 불구하고'self.x = 5'는 유효합니다. – horseyguy
간결한 설명 주셔서 감사합니다. –