[英]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.