私はこれがルビーで可能である方法変数が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)操作である可能性があります。私は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)です。マイクロベンチマークでは、低カーディナリティ(単一要素まで)であっても、セットがわずかに速く、カーディナリティが高いほど大幅に高速であることがわかりました。