我有一个值'Dog'和一个数组['Cat', 'Dog', 'Bird'].
如何在没有循环的情况下检查数组中是否存在?是否有一种简单的方法来检查值是否存在,仅此而已?
所以写这个的标准方法似乎是array.include?(object)。但是,与object.in(array)相比,我发现很难快速阅读和理解。红宝石中有这样的东西吗?
我刚刚再次遇到的示例是(user_role是一个字符串,而allowed_user_roles是一个字符串数组):
allowed_user_roles.include?(user_role)
Run Code Online (Sandbox Code Playgroud)
我知道它可能是个人喜好,但是我发现它很容易阅读和理解。
user_role.in(allowed_user_roles)
Run Code Online (Sandbox Code Playgroud) 我最近发现在Python中你可以这样做:
array = [1, 2, 3, 4]
if 3 in array:
print("Yep!")
Run Code Online (Sandbox Code Playgroud)
然后,我心想:"嗯,为什么它在Ruby中有所不同?if 3 in array比它更具可读性if array.include? 3." 然后,我意识到,Ruby是纯OOP,这种方法是基于关键字的.
但是,我仍然在想.如果Python方法不是OOP,为什么Ruby中没有其他更短的方式可读性更强?在思考时,我不认为"此列表是否包含该元素?",但"该元素是否在该列表中?".
我们假设,以下代码是可能的:
array = [1, 2, 3, 4]
if 3.in? array
print "Yep!
end
Run Code Online (Sandbox Code Playgroud)
我看到它是从一个掉头list.method(element)来element.method(list).所以,我想知道:哪些红宝石原则/规则反对上面提到的代码?
编辑:糟糕,我写了"基于键盘",但当然意味着"基于关键字".要强调这一点:我不是在寻找行为类似于in的方法?方法; 我正在寻找它没有以这种方式在Ruby中实现的原因.