1
메소드 정의로 할 수 있는지 궁금합니다. 같은 방법으로 수행하는 end_{something}
이라는 여러 메서드가 있는데 위와 같은 메커니즘을 사용하여 하나의 그룹으로 그룹화 할 수 있는지 알고 싶습니다.
메소드 정의로 할 수 있는지 궁금합니다. 같은 방법으로 수행하는 end_{something}
이라는 여러 메서드가 있는데 위와 같은 메커니즘을 사용하여 하나의 그룹으로 그룹화 할 수 있는지 알고 싶습니다.
표현식 if "create_#{kind}"
이 항상 true를 반환하는 것을 확인하면 메서드가 정의되어 있는지 확인하는 defined?("create_#{kind}")
을 의미 할 수 있습니다. 또한 동적 방법을 정의 할 수 있습니다
def method_missing(method_name, *arguments, &block)
method = method_name.to_s
case method
when 'create_toto'
#do somthing
when 'create_tata'
#do somthing
when 'create_titi'
#do somthing
else
super
end
end
:
당신은 'method_missing'방법을 사용할 수 있습니다
[:toto, :tata, :titi].each do |kind|
define_method "create_#{kind}" do
#do something
end
end
고맙습니다. 작동합니다! – user3314570
나에게 유효한 루비처럼 보이지 않는다. 당신이 무엇을하고 싶은지 확실하지 않기 때문에 (당신이 아무것도하지 않는 것처럼 위의 "같은 메커니즘"을 사용할 수는 없기 때문에) 이것을 보았던 곳으로 다시 체크하거나 아마도 링크를 해줄 수 있습니까? 나는 * 당신이 루비가 할 수있는 무언가 인 루프에서 매우 유사한 메소드들을 정의하고 싶다고 생각한다. 그러나 당신의 예제와 같은 것에 관한 유일한 것은 첫 번째 라인입니다. . . 그냥 루프 정의입니다. –
@NeilSlater 실제로 작업 프로그램이고이 컴퓨터에 없기 때문에 링크 할 수 없습니다. "동일한 메커니즘"이 의미하는 바는 각 루프를 다른 종류로 대체하고 좋은 함수를 호출하는 "create_ {kind}"입니다. 나는 'def end_ {kind}'와 어딘가에 kind = [: titi, : toto] 같은 것을 가질 수 있을지 궁금해하고있었습니다. 루비에서 그렇게 할 수 있다면 – user3314570