gpt4 book ai didi

ruby - 测试变量是否与多个字符串中的任何一个匹配,而没有长的 if-elsif 链或 case-when

转载 作者:数据小太阳 更新时间:2023-10-29 06:35:13 27 4
gpt4 key购买 nike

我想在 ruby​​ 中有一种很好的单行方式来表达

if mystr == "abc" or "def " or "ghi" or "xyz"

但在我通常查阅的在线引用资料中找不到如何做到这一点...

谢谢!

最佳答案

也许你不知道你可以在一个案例上放置多个条件:

case mystr
when "abc", "def", "ghi", "xyz"
..
end

但是对于这个特定的基于字符串的测试,我会使用正则表达式:

if mystr =~ /\A(?:abc|def|ghi|xyz)\z/

如果您不想构造正则表达式,也不想使用case 语句,您可以创建一个对象数组并使用Array#include?。测试对象是否在数组中:

if [a,b,c,d].include?( o )

或者,通过猴子修补对象,你甚至可以扭转它:

class Object
def in?( *values )
values.include?( self )
end
end

if o.in?( a, b, c, d )

关于ruby - 测试变量是否与多个字符串中的任何一个匹配,而没有长的 if-elsif 链或 case-when,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4893816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com