當比較Ruby字符串時,我注意到了一些意外的行爲。我將在下面寫: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值。它也沒有使用字符串長度作爲我期望的主要比較。
這是一個嚴格的字符串比較;不知道爲什麼你認爲它不是。除非其中一個「數字」大於其相關字符串值(例如「11」),否則您無法行使差異。哦,他打敗了我。 –
不,它只是一個字符串的同情心,這裏是一個反例:''4.11'> ='4.9'#=> false' – spickermann
順便說一下,如果你能解釋什麼*文檔](http://ruby-doc.org/core/String.html#method-i-3C-3D-3E),以便Ruby開發人員可以爲未來的讀者改進它。 –