나는변수가 Ruby에서 정수 목록에 포함되어 있는지 테스트하는 방법은 무엇입니까?
if current_user.id in?(1,2,3,100,312)
.....
어떻게 이런 루비 가능합니다 ...의 라인을 따라 뭔가를하고 싶습니다? 감사합니다.
나는변수가 Ruby에서 정수 목록에 포함되어 있는지 테스트하는 방법은 무엇입니까?
if current_user.id in?(1,2,3,100,312)
.....
어떻게 이런 루비 가능합니다 ...의 라인을 따라 뭔가를하고 싶습니다? 감사합니다.
Ruby에 포함 기능이 있습니다. 구문은 다음과 같습니다.
[1,2,3].include?(2)
찾고 계신 키워드는 include입니다. 그러나, 그것은 당신이 가지고있는 것과 반대의 방식으로 작동합니다. 그것은을해야 ARRAY.include?(WHAT_YOU_ARE_LOOKING_FOR)
if [1,2,3,100,312].include?(current_user.id)
if [1,2,3,100,312].include?(current_user.id)
....
할 필요가있다.
누구나 지적한 바는 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)이다. 마이크로 벤치 마크에서 필자는 낮은 카디널리티 (단일 요소에 이르기까지)가있는 경우에도 세트가 약간 더 빠르며 높은 카디널리티를 사용하면 훨씬 빠릅니다.