在比较 Ruby 字符串时,我注意到一些意外行为。我将在下面写:
2.3.1 :011 > '5.6' >= '5.5'
=> true
2.3.1 :012 > '5.6' >= '5.7'
=> false
2.3.1 :013 > '5.6' >= '5.6.1'
=> false
2.3.1 :014 > '5.6' <= '5.6.1'
=> true
2.3.1 :016 > '4.6.1' <= '5.6'
=> true
2.3.1 :017 > '4.6.1' >= '5.6'
=> false
我在网上看到人们Gem::Version.new()
用来比较语义版本的几个地方。不过,这不是我的问题。谁能向我解释一下 Ruby 是如何在没有任何库帮助的情况下比较语义版本字符串的?当我用数字比较运算符比较两个字符串时会发生什么?
从上面的测试我想我可以确认它不是简单地比较每个字符串的第一个/最后一个字符的 ascii 值。它也没有使用字符串长度作为我所期望的主要比较。