Непонятное поведение интерпретатора Ruby
Передаю ARGV[0] == '4'
a = ARGV[0]
p a === /\d+/ # тут выводит false
При этом в операторе case+when срабатывает в таком же условие и выводит integer
p case a
when /\d+\.\d+/
'float'
when /\d+/
'integer' # true и выводит integer
else 'string'
end
Почему в первом случае false, во-втором true. Насколько я знаю case/when делает сравнение оператором ===, а тут видно что это не так
И следом еще один вопрос. Код тот же
p case ARGV[0]
when /\d+\.\d+/
'float'
when /\d+/
'integer' # true
else 'string'
end
Почему выводится integer если передать параметром "5a" например. Строка должна соответствовать только цифрам.
Источник: Stack Overflow на русском