다음 중 어떤 방법으로 가능합니까? 해시 번호가 홀수로 계속 표시됩니다.def 인수로 해시
def thores_hammer(bling)
hammer_bling = { bling }
end
thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
감사합니다.
다음 중 어떤 방법으로 가능합니까? 해시 번호가 홀수로 계속 표시됩니다.def 인수로 해시
def thores_hammer(bling)
hammer_bling = { bling }
end
thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
감사합니다.
를 오류로 실행중인 이유는 thores_hammer
방법 가 호출 될 때 Hash
가 암시 적으로 만들어집니다 - 당신은 { bling }
을 수행 할 때 그래서 당신은 해시를 만드는 하나의 키 (자체가 해시 임) 및 값 없음. 따라서 오류가 발생했습니다.
당신이 중괄호를 삭제하기 만하면됩니다 :
irb> def thores_hammer(bling)
hammer_bling = bling
end
#=> nil
irb> thores_hammer :rubys => 5,
:emeralds => 5,
:souls => 333
#=> {:rubys=>5, :emeralds=>5, :souls=>333}
이 시도 :
def thores_hammer(bling)
hammer_bling = bling
end
thores_hammer Hash[:rubys => 5, :emeralds => 5, :souls => 333]
당신이 할하려는 할 수있다하는 것은 할 수있는 해시의 복사본을 만들 것입니다 같은 :
def thores_hammer(bling)
hammer_bling = bling.dup
end
이 오랫동안 해시를 사용하려는 경우 복사본을 만드는 것이 좋습니다. 다른 방법으로 사용할 수 있기 때문에 복사본을 수정하는 것이 좋은 방법인지 확실하지 않습니다.
또한 블록 선언과 같이 Ruby에서 중괄호에 여러 가지 용도가 있습니다.
Magic! 당신이 두 번 나를 구해주었습니다 – rubynewbie
나는 메신저로 더 많은 시간을 보내고 있다고 생각합니다. – rubynewbie