3

ruby で、複数の OR 条件を if 文で表現するより簡潔な方法はありますか?

たとえば、これは私が持っているコードです:

if call_type == "GPRS" || call_type == "SMS" || call_type == "MMS" || call_type == "USSD" || call_type == "TELEPHONY"
  #do something
end

OR 条件が増えるので、このように何度も書きたくありません。ruby 2.1.0 でこれを表現するより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

12

使用できますArray#include?

if %w(GPRS SMS MMS USSD TELEPHONY).include? call_type
  # ...
end

またはcase:

case call_type
when 'GPRS', 'SMS', 'MMS', 'USSD', 'TELEPHONY'
  # ...
end

または正規表現:

if call_type =~ /^(GPRS|SMS|MMS|USSD|TELEPHONY)$/
  # ...
end

cremnoで指摘されているよう^に、行頭と行末に$一致します。複数の行が含まれている場合は、代わりに\Aandを使用できます。\zcall_type

于 2015-02-24T07:47:01.010 に答える