如何分析“最大”方法

时间:2013-11-19 04:15:17

标签: ruby string

有人可以解释为什么"time"是最大值吗?

my_array = %w{hello my time here is long}
my_array.max  #=> "time"

2 个答案:

答案 0 :(得分:2)

因为ttime的字母my_array在您的数组'hello' > 'time' # => false 'my' > 'time' # => false 'here' > 'time' # => false 'is' > 'time' # => false 'long' > 'time' # => false 中的位置更高。

这是一种方式,如何进行字符串比较:

my_array

要了解上述片段代码的输出,您必须查看String#<=>文档。由于您的<=>包含调用方法max的所有字符串实例,因此构建{{1}}的输出。

文件说Enumerable#max

  

可枚举#max,不带块假设所有对象都实现Comparable

答案 1 :(得分:0)

这是计算机如何查看字符串并进行比较。

如果我们查看每个单词的第一个字符,它会有所帮助,因为我们知道字母表是如何命令字母的:

%w[hello my time here is long].map{ |s| s[0] }.sort # => ["h", "h", "i", "l", "m", "t"]

但这并不能真正帮助实现它的可视化,所以在计算机看到它们时,请查看每个单词的字母:

%w[time tome].each do |w|
  puts w.chars.map(&:ord).join(', ')
end
# >> 116, 105, 109, 101
# >> 116, 111, 109, 101

每个字母都有一个值。多年来,有许多不同的方式为计算机订购字母,这导致字符值映射改变。 EBCDICASCII是最受欢迎但订单不同的。我们通常处理由操作系统设置的ASCII或衍生物。

查看单词中的字符如何由以下输出中的值表示。它应该使人们很容易理解计算机正在做什么。

%w[he hello help holler hollow].sort.each do |w|
  puts '"%6s": %s' % [ w, w.chars.map(&:ord).join(', ') ]
end
# >> "    he": 104, 101
# >> " hello": 104, 101, 108, 108, 111
# >> "  help": 104, 101, 108, 112
# >> "holler": 104, 111, 108, 108, 101, 114
# >> "hollow": 104, 111, 108, 108, 111, 119