반응형
Ruby on Rails에 해시가있는 경우 무관심하게 액세스 할 수있는 방법이 있습니까?
이미 해시가있는 경우 이렇게 만들 수 있습니까?
h[:foo]
h['foo']
같은가요? (이것을 무차별 액세스라고합니까?)
세부 정보 : 다음을 사용하여이 해시를로드 initializers
했지만 차이를 만들지 않아야합니다.
SETTINGS = YAML.load_file("#{RAILS_ROOT}/config/settings.yml")
그냥 사용할 수 있습니다 with_indifferent_access
.
SETTINGS = YAML.load_file("#{RAILS_ROOT}/config/settings.yml").with_indifferent_access
이미 해시가있는 경우 다음을 수행 할 수 있습니다.
HashWithIndifferentAccess.new({'a' => 12})[:a]
다음과 같이 YAML 파일을 작성할 수도 있습니다.
--- !map:HashWithIndifferentAccess
one: 1
two: 2
그 후 :
SETTINGS = YAML.load_file("path/to/yaml_file")
SETTINGS[:one] # => 1
SETTINGS['one'] # => 1
일반 해시 대신 HashWithIndifferentAccess 를 사용하십시오 .
완전성을 위해 다음과 같이 작성하십시오.
SETTINGS = HashWithIndifferentAccess.new(YAML.load_file("#{RAILS_ROOT}/config/settings.yml"))
You can just make a new hash of HashWithIndifferentAccess type from your hash.
hash = { "one" => 1, "two" => 2, "three" => 3 }
=> {"one"=>1, "two"=>2, "three"=>3}
hash[:one]
=> nil
hash['one']
=> 1
make Hash obj to obj of HashWithIndifferentAccess Class.
hash = HashWithIndifferentAccess.new(hash)
hash[:one]
=> 1
hash['one']
=> 1
반응형
'Programing' 카테고리의 다른 글
Linux / Bash, ps -o를 사용하여 특정 이름으로 프로세스를 얻습니까? (0) | 2020.12.15 |
---|---|
문자열 리소스에 변수를 넣는 방법은 무엇입니까? (0) | 2020.12.15 |
Vim에서 HTML 태그 탐색 (0) | 2020.12.15 |
먼저 또는 생성 (0) | 2020.12.14 |
재귀 적으로 디렉토리에서 파일 검색 (0) | 2020.12.14 |