Я готовлюсь к завтрашнему экзамену. Один из предыдущих вопросов заключался в определении метода добавления e
к элементу массива (массиву символов), если элемент заканчивался на a
, или добавлении s
, если он заканчивался на i
.
Без использования gsub или sub я могу сделать это нормально:
arbitrary = [:alpha, :beta, :kappa, :phi]
p arbitrary
def pluralise (array)
manipulate = []
array.each {|member|
string = member.to_s
last_char = string[-1,1]
if last_char == "a" then
string = string + "e"
manipulate << string.to_sym
end
if last_char == "i" then
string = string + "s"
manipulate << string.to_sym
end
}
manipulate
end
new_arbitrary = pluralise(arbitrary)
p new_arbitrary
Однако попытка сделать это с помощью gsub
или sub
не изменит массив:
arbitrary = [:alpha, :beta, :kappa, :phi]
p arbitrary
def pluralisesub (array)
manipulate = []
array.each {|member|
string = member.to_s
last_char = string[-1,1]
if last_char == "a" then
string.gsub(string, string + "s")
manipulate << string.to_sym
end
if last_char == "i" then
string.gsub(string,string + "s")
manipulate << string.to_sym
end
}
manipulate
end
new_arbitrary = pluralisesub(arbitrary)
p new_arbitrary
У кого-нибудь есть идеи, что здесь происходит не так?
Спасибо