이것은 바보 같은 질문 일 수 있습니다. 그러나 매개 변수의 해시를 허용하는 루비 메서드를 만드는 방법을 알지 못합니다.매개 변수의 해시를 허용하는 루비 메서드를 만듭니다.
login_success :msg => "Success!", :gotourl => user_url
매개 변수의이 종류를 받아들이는 방법의 프로토 타입은 무엇입니까 : 나는 레일에서이 같은 방법을 사용하고 싶은 말은? 어떻게 읽습니까?
이것은 바보 같은 질문 일 수 있습니다. 그러나 매개 변수의 해시를 허용하는 루비 메서드를 만드는 방법을 알지 못합니다.매개 변수의 해시를 허용하는 루비 메서드를 만듭니다.
login_success :msg => "Success!", :gotourl => user_url
매개 변수의이 종류를 받아들이는 방법의 프로토 타입은 무엇입니까 : 나는 레일에서이 같은 방법을 사용하고 싶은 말은? 어떻게 읽습니까?
paramaters를 해시 구문의 Ruby 함수에 전달하면 Ruby가이를 목표로 간주합니다. 따라서 :
def login_success(hsh = {})
puts hsh[:msg]
end
기억해야 할 중요한 것은 당신이 해시 문자를 {생략 곳 해시 매개 변수가 함수의 마지막 매개 변수 인 경우에만,} 구문을 할 수 있다는 것입니다. 그래서 앨린이 한 일을 할 수 있습니다. 또한
def login_success(name, hsh)
puts "User #{name} logged in with #{hsh[:some_hash_key]}"
end
그리고 당신은
login_success "username", :time => Time.now, :some_hash_key => "some text"
로 호출 할 수 있습니다하지만 해시 마지막 매개 변수가 아닌 경우에는 {}와 해시 요소를 둘러싸고해야합니다.
하나의 인수 만 사용하십시오. 루비는 해시 이름으로 지정된 값을 변환합니다
def login_success arg
# Your code here
end
login_success :msg => 'Success!', :gotourl => user_url
# => login_success({:msg => 'Success!', :gotourl => user_url})
당신이 정말로 대신 기본 루비 오리 타이핑의 해시를 얻을 수 있는지 확인하려면, 당신은 그것을 제어 할 필요가있다. 예를 들어 뭔가 같은 :
def login_success arg
raise Exception.new('Argument not a Hash...') unless arg.is_a? Hash
# Your code here
end
키워드 인수의 출현으로 Ruby 2.0에서 당신은 지금,
def login_success(msg:"Default", gotourl:"http://example.com")
puts msg
redirect_to gotourl
end
루비 2.1에서 기본 값을 남길 수 있습니다 할 수
def login_success(msg:, gotourl:)
puts msg
redirect_to gotourl
end
호출 될 때 기본값이없는 매개 변수를 두지 않으면 ArgumentError
Ruby 2.1의 기본값을 생략하여 필요한 매개 변수를 만들 수 있습니다. 'def login_success (msg :, gotourl :)'는'msg'와'gotourl' 매개 변수를 지정하지 않고'login_success'를 호출하려고하면 오류가 발생합니다. – Ajedi32
login_success (* params)와 같은 것을 사용할 수 없습니까? – collimarco
a * (일명 splat 연산자)는 메서드가 임의의 수의 args를 받아들이고 params라는 배열에 넣을 것을 의미합니다. 사용 여부는 사용중인 제품에 따라 결정됩니다. 제공 한 예에서 해시가 의미가 있습니다. – Allyn
그 말은 당신이 어떤 수의 주장을 기대한다고 말합니다. 'foo (1, : b, '3')'와 비슷합니다. 또한, "= {}"부분은 필요 없습니다. 이것은 잘 작동합니다 : def login_success (hash). 위의 코드는 기본값을 빈 해시로 설정합니다. –