我正在开发一些Ruby项目。我还在学习Ruby的一些基本原则,但我需要一些帮助来处理我遇到的特定问题。 我需要使用与类关联的方法分配一些已经创建的元素。我怎么能这样做呢? 这是我的榜样。
让我们说我有一个数组数组
my_pets = ['Buddy the iguana', 'Coco the cat', 'Dawn the parakeet']
我还有一个课程,我已经编写了一个我需要my_pets数组才能访问的特定功能。基本上,这个函数循环遍历一个字符串数组并替换" a"与" @"。
class Cool_Pets
def a_replace(array)
array.each do |string|
if string.include?("a")
string.gsub!(/a/, "@")
end
end
puts string
end
end
有没有办法将my_pets指定为Cool_Pets类的一部分,以便它可以使用a_replace方法?
这是我想要的结果:
a_replace(my_pets) = ['Buddy the igu@na', 'Coco the c@t', 'D@wn the p@r@keet']
答案 0 :(得分:1)
您可以在此处使用Enumerable#map:
my_pets.map{ |s| s.gsub(/a/,'@') }
#=> ["Buddy the igu@n@", "Coco the c@t", "D@wn the p@r@keet"]
您的代码几乎可以使用,只需删除puts array
和if
语句即可。然后只需调用该函数。
#Use CamelCase for class names NOT snake_case.
#Using two spaces for indentation is sensible.
class CoolPets
def a_replace(array)
array.each do |string|
string.gsub!(/a/, "@")
end
end
end
cool = CoolPets.new
my_pets = ['Buddy the iguana', 'Coco the cat', 'Dawn the parakeet']
p cool.a_replace(my_pets)
#=> ["Buddy the igu@n@", "Coco the c@t", "D@wn the p@r@keet"]
答案 1 :(得分:0)
不确定这是否是您要找的,但请查看 Mixins :http://ruby-doc.com/docs/ProgrammingRuby/html/tut_modules.html#S2
module CoolPet
def a_replace(array)
array.each do |string|
if string.include?("a")
string.gsub!(/a/, "@")
end
end
puts array.inspect
end
end
class MyPet
include CoolPet
end
array = ['Buddy the iguana', 'Coco the cat', 'Dawn the parakeet']
pet = MyPet.new
pet.a_replace(array) # => ["Buddy the igu@n@", "Coco the c@t", "D@wn the p@r@keet"]