【发布时间】:2016-02-15 08:15:11
【问题描述】:
我将自己的方法添加到 Array 类中,该方法与 Array#uniq 执行相同的操作。
这是我的版本:
arr = ["fun", "sun", 3, 5, 5, 5, 1, 2, 1, "fun"]
class Array
def my_uniq
new_arr = []
each do |item|
new_arr << item unless new_arr.include?(item)
end
new_arr
end
end
print arr.my_uniq
有没有办法修改它以返回唯一元素的索引而不是元素本身?
【问题讨论】:
-
我建议您编辑您的问题。 1. 您对
my_uniq的方法定义无关紧要,因此将其删除(对不起。) 2. 将第二句替换为更精确的内容,例如“如何编写返回(最小)索引的Array方法数组的每个唯一元素?” (不需要粗体字。) 3. 删除你的第三句。 (可悲的是,没有人在乎。)。 4. 举一个例子,保留您的输入 (arr = ["fun",...]) 并提供您想要或预期的输出([0, 1, 2, 3, 6, 7],如果我的理解是正确的)。 -
当你给出一个例子时,为每个输入分配一个变量是有帮助的,就像你所做的那样 (
arr = ....)。这样,读者可以在答案和 cmets 中引用这些变量,而无需定义它们。最后,Ruby 约定是使用 snake_case 作为变量和方法的名称(例如,new_arr而不是newArr)。您不必这样做,但如果您不这样做,请注意,您的代码的读者可能会认为您是新手。 -
感谢您的提示。我会更新并阅读 Ruby 风格。
-
再想一想,请忽略我的建议#1;只需明确说明这是您的
Array#uniq代码,并且您正在尝试修改它以返回唯一元素的索引数组。 -
关于您的修订的另一个建议:将您的第二句话移到代码后面,然后说“有没有办法修改它以返回唯一元素的索引而不是元素本身?对于
arr的给定值,我希望它返回数组[0, 1, 2, 3, 6, 7]"。一旦你看到它,我会删除这个评论。无需回复。
标签: arrays ruby monkeypatching