Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Range | === or include? or member?

概要

Range#=== obj -> bool
Range#include?(obj) -> bool
Range#member?(obj) -> bool

詳細

obj が範囲内に含まれている時に真を返却。
Range#=== は case 文で使用。

サンプルコード
require 'tbpgr_utils'

[:include?, :member?, :===].each do |m|
p "*** Range##{m} ***"
  bulk_puts_eval binding, <<-EOS
(2..5).send(m, 2)
(2..5).send(m, 5)
(2..5).send(m, 6)
  EOS
end


[*'a'..'z'].shuffle.take(10).each do |x|
  print "#{x} in "
  case x
    when ('a'..'f')
      p 'a to f'
    when ('g'..'i')
      p 'g to i'
    else
      p 'other'
  end
end

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

"*** Range#include? ***"
(2..5).send(m, 2) # => true
(2..5).send(m, 5) # => true
(2..5).send(m, 6) # => false
"*** Range#member? ***"
(2..5).send(m, 2) # => true
(2..5).send(m, 5) # => true
(2..5).send(m, 6) # => false
"*** Range#=== ***"
(2..5).send(m, 2) # => true
(2..5).send(m, 5) # => true
(2..5).send(m, 6) # => false
h in "g to i"
y in "other"
s in "other"
j in "other"
d in "a to f"
u in "other"
i in "g to i"
p in "other"
n in "other"
k in "other"