Actions
Feature #5798
closedRange#include? needs some optimization
Feature #5798:
Range#include? needs some optimization
[ruby-core:<unknown>]
Description
For example:
('aa'..'az').include? 123
it seems that the procedure is:
- check whether 'aa' == 123 # false
- 'aa'.succ # 'ab'
- check whether 'ab' == 123 # false
- 'ab'.succ # 'ac'
- check whether 'ac' == 123 # false
...
n-1. 'ay'.succ # 'az'
n. check whether 'az' == 123 # false
finally return false
However, 'aa' and 123 are not the same class. It's not necessary to take the whole steps of 'succ' and '=='.
Maybe it should check 'aa'.class and 123.class first, or use <=> instead of == to check, when 'aa' <=> 123 returns nil(== only returns true/false, no nil), the procedure breaks.
Actions