2012-03-23 2 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)操作である可能性があります。私はSet.new(配列)としてセット別途代わりにインラインを初期化してきました

require 'set' 

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

自体はO(n)の操作です:速度が問題であるかのように、Rubyの設定は、検索上のO(1)です。マイクロベンチマークでは、低カーディナリティ(単一要素まで)であっても、セットがわずかに速く、カーディナリティが高いほど大幅に高速であることがわかりました。

関連する問題