使用数字范围选择数组项

Wes*_*ter 1 ruby arrays hash range

我有四种尺寸,每种尺寸均以平方英尺为准:

# The sizes. Sizes are in sq ft (min, max)
size_hash = {
  'Large'  => [70,139],
  'Medium' => [15,69],
  'Small'  => [1,14]
}
Run Code Online (Sandbox Code Playgroud)

如果给出了数字40,我怎么能从Medium数组返回大小?

我需要做这样的事吗?:

# The sizes. Sizes are in sq ft (min, max)
size_hash = {
  [70..139]  => 'Large',
  #... etc
}
Run Code Online (Sandbox Code Playgroud)

J-_*_*_-L 5

你可以使用proc:

size_store = proc{ |n|
  case n
  when 70..139
    'Large'
  when 15..69
    'Medium'
  when 1..14
    'Small'
  end
}
# USAGE: size_store[40]
Run Code Online (Sandbox Code Playgroud)

  • 为什么使用`proc`而不是基本方法? (2认同)