这就是我的想法:
def appendUnique(a,x)
for i in 0 .. a.size-1 do
if a[i]=x then
a==a
else
a=a+x
end
p(a)
end
end
appendUnique([-1,5,3],4)
将a的每个成员与x进行比较,如果a等于x,则返回a,否则返回a + x。为什么这不起作用?它只是用4s替换所有数组成员...... 我想要这个:结果[-1,5,3,4]来自上面,因为4不在数组中,而[-1,5,3]来自appendUnique([ - 1,5,3],5)。
答案 0 :(得分:4)
您的代码存在以下问题:
each
代替for
来迭代集合a[i] = x
是作业,您需要a[i] == x
a == a
只返回true
a + x
连接两个数组,但x
不是数组我只需使用Array#include?
来检查项目是否存在:
def appendUnique(array, item)
if array.include? item
array
else
array + [item]
end
end
答案 1 :(得分:1)
如果您想要一个包含唯一元素的数组,可以使用Set class
答案 2 :(得分:0)
它只是用4s替换所有数组成员......
a[i]=x
是一项任务而非比较。像你一样在循环中运行它会将a
的每个元素设置为x
(即4)。
其余代码也需要做很多工作。例如:您只应在运行循环后追加到a
,并确定x
不在数组中。