Ruby 向列表中添加项目,同时避免重复项目

Ruby 向列表中添加项目,同时避免重复项目,ruby,Ruby,我是一名学生。我不仅仅是在寻找答案;我关心逻辑 添加项目方法应该有两个参数。第一个参数是要添加到列表中的项,第二个参数是要添加该项的数组(即列表)。该方法不应添加重复项。例如,您可以从以下内容开始: def add_item!(item, list) end 如果我们只是简单地将项目划入列表,而不必担心重复,我们可以写: def add_item!(item, list) list << item list # this is what we return from the

我是一名学生。我不仅仅是在寻找答案;我关心逻辑

添加项目方法应该有两个参数。第一个参数是要添加到列表中的项,第二个参数是要添加该项的数组(即列表)。该方法不应添加重复项。例如,您可以从以下内容开始:

def add_item!(item, list)
end
如果我们只是简单地将项目划入列表,而不必担心重复,我们可以写:

def add_item!(item, list)
  list << item
  list # this is what we return from the method
end
尝试使用
include?
方法确定给定项目是否在给定列表中,并完成
add\u项目实现

我的尝试是:

def add_item!(item, list)
  if list.include?(item)
    list.delete(item)
  else  
    list << item
    list # this is what we return from the method
  end
end

p add_item!("banana", ["orange"])
p add_item!("orange", ["orange"])
def添加项目!(项目、清单)
如果列表。包括?(项目)
列表。删除(项目)
其他的

列出你做错了什么:

如果数组包含该项,则将删除该项,否则将不执行该部分。因此,该项将被插入,并且该方法返回最后一条语句的返回值,即
list.delete(item)

根据,

从self中删除等于obj的所有项目

返回上次删除的项,如果未找到匹配项,则返回nil


您很接近答案:您不需要调用delete,因为这将删除列表中的现有元素。如果列表中包含?返回false,只需将其添加到列表中,如果为true,则不执行任何操作

def add_item!(item, list)
  if !list.include?(item)
    list << item
  end
  list # this is what we return from the method
end
def添加项目!(项目、清单)
如果列表。包括?(项目)

列出OP说他不想要解决方案的清单。他想知道他做错了什么。这就是为什么我没有给他答案英雄联盟没关系。。。我仍然能够得到“tomsoft”提供的逻辑,这大大缓解了我的脑动脉瘤!谢谢Santosh和tomsoft!非常感谢你的帮助!
def add_item!(item, list)
  if !list.include?(item)
    list << item
  end
  list # this is what we return from the method
end