레일과 루비를 배우려고합니다. 그런 다음 질문이 있습니다.루비의 함수에 심볼을 매개 변수로 사용하기
나는 기호 만 사용하는 함수를 만들 수 있음을 알았습니다. 대신 해시를 사용합니다. 예를 들어
:
a={b: "hash value", c: "another has value"}
printValue(:b)
사실이 하나입니다 당신은 예를 들어 줄 수 있습니까? 내가 검색하려고했지만 찾지 못했습니다.
레일과 루비를 배우려고합니다. 그런 다음 질문이 있습니다.루비의 함수에 심볼을 매개 변수로 사용하기
나는 기호 만 사용하는 함수를 만들 수 있음을 알았습니다. 대신 해시를 사용합니다. 예를 들어
:
a={b: "hash value", c: "another has value"}
printValue(:b)
사실이 하나입니다 당신은 예를 들어 줄 수 있습니까? 내가 검색하려고했지만 찾지 못했습니다.
루비를 배우는 사람들이 기호를 이해하지 못하는 것이 일반적입니다. 심볼은 다른 루비 타입과 마찬가지로 표준 루비 타입입니다. 다음은 심볼이 특정 유형의 오브젝트 인 방법의 예입니다.
'A'.class # => String
1.class # => Fixnum
:a.class # => Symbol
다른 유형과 마찬가지로 기호에는 메소드가 있습니다. IRB를 열고 :a.methods.sort
을 입력하면 심볼에 대해 호출 할 수있는 모든 메소드가 표시됩니다. 예 : :a.to_s # => 'a'
잘 알고 있듯이 기호는 종종 Hash
키로 사용됩니다. 그러나, 다른 유형도 Hash
키가 될 수 있습니다 당신처럼
my_hash = { 'A' => 'an A', 1 => 'a 1', :a => 'the symbol a'}
my_hash['A'] # => 'an A'
my_hash[1] # => 'a 1'
my_hash[:a] # => 'the symbol a'
이 방법에 String
또는 다른 유형을 전달할 수 있습니다, 당신은 Symbol
를 전달할 수 있습니다. 실제로 마지막 예에서 String
, Fixnum
및 Symbol
~ my_hash
의 []
메소드를 전달합니다.
사람들이 해시 키의 기호를 정말 좋아하는 이유는 재사용이 매우 가볍기 때문입니다. 다음은 기호와 다른 개체 사이의 주요 차이점 중 하나 보여주는 예입니다 : 당신이 볼 수 있듯이
"a".object_id # => 70098399407740
"a".object_id # => 70098399393460
"a".object_id # => 70098399388140
:a.object_id # => 359368
:a.object_id # => 359368
:a.object_id # => 359368
, 나는 값 "는"이 세 개의 문자열을 생성, 그리고 그들이 각각 다른 개체 ID를 . 즉, 값이 "a"인 메모리에 세 개의 String
개체가 있습니다. 대조적으로, 내가 :a
을 사용할 때마다 동일한 객체 ID를 갖습니다. 내 전체 프로그램에는 하나의 :a
개체 만 있습니다.
기호를 메소드에 전달하는 것이 일반적입니다. 이것을 Rails에서 많이 볼 수 있습니다.
[함수가 Ruby에서 해시 인수를 사용하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/16576477/how-do-functions-use-hash-arguments-in-ruby) –
이것은 순수한 루비 질문입니다. 그래서 Rails 태그는 없습니다. 부적절한 태그를 추가하면 일부 회원은 관심이없는 질문을 읽는 데 시간을 낭비하게되며 다른 회원은 해당 태그로 질문을 필터링하면 관심있는 질문을 놓칠 수 있습니다. –
캐리 감사합니다. 레일스 태그를 삭제했습니다. – wendy0402