我正在尝试为字母的每个字母分配一个数字,并使用数字0到25打印字符串。
创建数组:alphabet = ('A'..'Z').to_a
打印数组:puts alphabet[6,8].join
给了我GHIJKLMN
的输出,这不是我所期望的。期望打印:GI
此外,如果尝试:puts alphabet[6,8,15].join
,我将收到以下错误:wrong number of arguments (given 3, expected 1..2) (ArgumentError)
我正在使用Ruby 2.3.1。我在做什么错了?
答案 0 :(得分:4)
Array#[]
用途广泛。您可以传递索引:
alphabet[6] #=> "G"
索引和长度:
alphabet[6, 2] #=> ["G", "H"]
或范围:
alphabet[6..8] #=> ["G", "H", "I"]
如果您要获取多个索引的值,请使用values_at
:
alphabet.values_at(6, 8, 15)
#=> ["G", "I", "P"]
还支持范围:
alphabet.values_at(6..8, 15)
#=> ["G", "H", "I", "P"]
或重复相同的索引:
alphabet.values_at(2, 7, 4, 4, 18, 4)
#=> ["C", "H", "E", "E", "S", "E"]
答案 1 :(得分:3)
您可以使用#values_at
在多个索引处获取数组的值:
alphabet = ('A'..'Z').to_a
alphabet.values_at(2, 7, 4, 4, 18, 4).join
#=> "CHEESE"
希望这会有所帮助!