인메모리 캐시 생성을 위한 루비 해시 트릭
3406 단어 ruby
Hash
인스턴스를 사용하여 수행됩니다.예를 들어 Star Wars 캐릭터가 어두운 면에 있는지 여부를 확인하는 메서드가 있다고 가정해 보겠습니다.
def dark_side?(character_name)
StarWars::Character.find_by(name: character_name).dark_side?
end
이 메서드는 주어진 입력에 대한 결과를 얻기 위해 DB 쿼리를 실행해야 하기 때문에 무겁습니다. 따라서 동일한
character_name
으로 여러 번 호출해야 할 필요가 있다는 것을 안다면 다음과 같이 이해하는 것이 좋습니다. 나중에 사용할 수 있도록 결과를 저장합니다.다음은 결과를 메모화할 수 있는 한 가지 가능성입니다.
def dark_side?(character_name)
@dark_side_cache ||= {}
@dark_side_cache[character_name] = StarWars::Character.find_by(name: character_name).dark_side? unless @dark_side_cache.key?(character_name)
@dark_side_cache[character_name]
end
그러나 Ruby
Hash
에는 블록을 전달할 수 있는 멋진constructor 변형이 있습니다.이 솔루션을 확인해보세요, 순수한 루비 뷰티 아닌가요? 💅
def dark_side?(character_name)
@dark_side_cache ||= Hash.new do |hash, char_name|
hash[char_name] = StarWars::Character.find_by(name: char_name).dark_side?
end
@dark_side_cache[character_name]
end
Reference
이 문제에 관하여(인메모리 캐시 생성을 위한 루비 해시 트릭), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/bajena/ruby-hash-trick-for-creating-an-in-memory-cache-j6j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)