0
동일한 논리의 다양한 조합을 많이 포함하는 몇 가지 방법이 있습니다. 정리하기 위해 각 테스트를 한 번만 정의하고 싶습니다.Ruby에서 클래스 변수를 할당 할 때 인스턴스 메서드를 호출 할 수 있습니까?
class Sentence < ApplicationRecord
#Gathers options hash for sentence
def options
{
pronoun: subject.pronoun,
...
}
end
#gives auxiliary verb based on sentence options
def aux
third_person = ["he", "she", "it"].include?(options[:pronoun])
aux = "does" if third_person #just an example
...
end
...
잘 작동하지만이 방법을 사용하여 다른 방법으로 사용하려고합니다.
#this works
@@third_person = ["he", "she", "it"].include?("he")
#this says that there is no options method
@@third_person = ["he", "she", "it"].include?(options[:pronoun])
내가 아는 사람이 있습니까?
은 우리가 "청소 일까지"얘기하고, 한 가지,하지만 일회용 방법 내부 배열 :
당신은 이런 식으로 전화를해야 이렇게. 'PREFIXES = % w [he she it]'과 같은 상수를 사용하고 그런 배열을 계속해서 사용하십시오. 모호성이나 성능 문제가있는 경우 정규 표현식을 사용할 수도 있습니다. 마찬가지로, 한 번 사용 된 임시 해시를 반환하는 것은 매우 비효율적이며 특히 해시가 변경되지 않는 경우 특히 그렇습니다. – tadman
테스트 코드의 컨텍스트가 명확하지 않습니다. 너 어디 뛰고있어? 또한 클래스 스타일'@@'변수를 선언하는 이유는 무엇입니까? – tadman
@tadman에 동의하면 대명사를 상수 변수로 분리해야합니다. 또한'freeze' 메소드를 사용하여 수정할 수 없습니다. 'PREFIXES = % w (he she he) .freeze' –