내 기능은 다음과 같습니다Ruby에서이 작은 DSL을 만드는 방법은 무엇입니까?
def hello(str)
puts "hello #{str}"
end
def hello_scope(scope, &block)
# ???
end
나는 일시적으로 내 방법의 블록 내에서 기능을 증대하고 싶습니다.
hello_scope
에서 나는 원래 hello
방법으로 전달하기 전에 str
문자열 앞에 scope
문자열을 추가하기 만하면됩니다. 여기에 예제가 있습니다 :
hello 'world' #=> hello world
hello_scope "welcome!" do
hello 'bob' #=> welcome!hello bob
hello 'alice' #=> welcome!hello alice
end
저는 루비에서 이런 종류의 일에 관해서 일종의 멍청한 짓입니다. 누군가가 나를 우아한 방식으로 해결하도록 도울 수 있습니까?
편집 :
hello_scope "welcome!" do |h|
h "bob" #=> welcome!hello bob
h "alice" #=> welcome!hello alice
end
당신은 아마'hello' 방법을 다시 작성하지 않고도 멋지게 할 수 없습니다. –
@AndrewMarshall 편집을했습니다. 이 일이 더 실현 가능합니까? – naomik