2012-03-23 1 views

답변

2

Ruby에 포함 기능이 있습니다. 구문은 다음과 같습니다.

[1,2,3].include?(2) 
2

찾고 계신 키워드는 include입니다. 그러나, 그것은 당신이 가지고있는 것과 반대의 방식으로 작동합니다. 그것은을해야 ARRAY.include?(WHAT_YOU_ARE_LOOKING_FOR)

if [1,2,3,100,312].include?(current_user.id) 
2
if [1,2,3,100,312].include?(current_user.id) 
    .... 

할 필요가있다.

1

누구나 지적한 바는 Array#include?입니다. 배열에 값이 많이 포함되어 있다면? 비교적 비싼 O (n) 작업 일 수 있습니다. I는 Set.new (배열)로 세트 별도로 대신 인라인 초기화 한

require 'set' 

SPECIAL_USER_IDS = Set[1,2,3,100,312] 
... 
if SPECIAL_USER_IDS.include? current_user.id 

자체가 O (N) 연산이다 속도가 문제가되는 경우되도록 루비 세트는 룩업 O (1)이다. 마이크로 벤치 마크에서 필자는 낮은 카디널리티 (단일 요소에 이르기까지)가있는 경우에도 세트가 약간 더 빠르며 높은 카디널리티를 사용하면 훨씬 빠릅니다.

관련 문제