Мне кажется, я понял, чего вы хотите, хотя я до сих пор не знаю, для чего array_size
, element_indexer
, array_start_index
и TestStuff
.
def test_stuff
letters = { "0" => " A ", "1" => " B ", "2" => " C " }
position = {"1" => "one ", "2"=> " two ", "3"=> " three ", "4"=>" four " }
my_array = [0, 1, 2, 2]
"**#{my_array.map.with_index {|e, i|
"#{letters[e.to_s].strip} #{position[(i+1).to_s].strip}"
}.join(' ')}**"
end
[Iвзял на себя смелость переформатировать ваш код в стандартный стиль кодирования Ruby.]
Однако все было бы намного проще, если бы не было всех этих преобразований типов и всех этих лишних пробелов.Кроме того, этот метод был бы гораздо более полезным, если бы он действительно мог возвращать разные результаты, вместо того, чтобы всегда возвращать одно и то же, потому что в настоящий момент он фактически точно эквивалентен
def test_stuff
'**A one B two C three C four**'
end
Somethingв этом смысле имело бы гораздо больше смысла:
def test_stuff(*args)
letters = %w[A B C]
position = %w[one two three four]
"**#{args.map.with_index {|e, i| "#{letters[e]} #{position[i]}" }.join(' ')}**"
end
test_stuff(0, 1, 2, 2)
# => '**A one B two C three C four**'
Если вы не хотите загрязнять пространство имен Object
своим методом, вы можете сделать что-то вроде этого:
def (TestStuff = Object.new).test_stuff(*args)
letters = %w[A B C]
position = %w[one two three four]
"**#{args.map.with_index {|e, i| "#{letters[e]} #{position[i]}" }.join(' ')}**"
end
TestStuff.test_stuff(0, 1, 2, 2)
# => '**A one B two C three C four**'