簡體   English   中英

Ruby數組和.max

[英]Ruby Array and .max

我在這里很困惑。

為什么["4", "5", "29", "54", "4", "0", "-214", "542", "-64", "1", "-3", "6", "-6"].max

返回6而不是542

從數組中刪除6后,則返回542

使用.min可以正常工作。

/令人困惑

作為參考,我一直在使用CodeWars,tutorialspoint.com和labs.codecademy.com/的Ruby IDE。

因為這是一個字符串數組,所以應該將元素轉換為數字。

["4", "5", "29", "54", "4", "0", "-214", "542", "-64", "1", "-3", "6", "-6"].map(&:to_i).max
=> 542

ruby通過ASCLL值比較單詞字符。

"6" > "542"
=> true

您可以通過each_byte獲取字符的ASCll值:

"0123456789".each_byte { |e| puts e }    
49
50
51
52
53
54
55
56
57

它是一個字符串數組,因此將其視為字母還是數字。 這意味着就像"za""azzzzzzz"之后出現"azzzzzzz""6"在(超過) "5" 類似地, "51"將在"5"之后,就像"ab"將在"a" ,依此類推。

將字符串與詞典順序進行比較。

您可以使用Enumerable#max_by來指定如何比較它們:

["4", "5", "29", "54", "4", "0", "-214", "542", "-64", "1", "-3", "6", "-6"].max_by(&:to_i)
#=> "542"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM