일반적으로 여러 가지 방법에서 액세스 할 수있는 인스턴스 변수를 만들거나 단순히 해당 메서드에 대한 인수로 전달되는 인스턴스 변수를 만드는 것이 가장 좋은 방법입니다. 기능적으로 메소드는 여전히 변수를 사용하여 작업을 수행 할 수 있으므로 동등합니다. 변수를 업데이트하고 업데이트 된 값을 반환하려는 경우 이점을 볼 수는 있지만 특정 사례에서는 변수가 업데이트되지 않으므로 각 메서드가 어떻게 작동하는지 결정할 수 있습니다.어느 쪽이 더 낫습니까? Ruby에서 인스턴스 변수를 생성하거나 로컬 변수를 전달하는 방법은 무엇입니까?
예제 코드가 명확하기 :
class Test
@foo = "something"
def self.a
if @foo == "something"
puts "do #{@foo}"
end
end
a()
end
class Test
foo = "something"
def self.a(foo)
if foo == "something"
puts "do #{foo}"
end
end
a(foo)
end
참고 : 클래스 수준에서'@foo = "something"을 선언하면 테스트 객체가 아닌 클래스 객체의 인스턴스 변수가됩니다. 그게 적어도 나 한테 줄 잡아 먹 혔어. – Jeremy
나는 똑같은 것을 보았다. '@ foo'와'foo'는 당신이 원하는 것이 아닙니다. '@@ foo'가 더 적절할 것입니다. –
변수가 클래스 전체에서 불변 인 경우에만 필요합니다. – philosodad