从数组中删除项目而不返回它

凯文·M

我正在尝试编写一种将导致像这样的rspec测试通过的方法:

it "starts the thing and move on" do
  class.method_1("Name One")
  class.method_1("Name Two")
  expect(class.method_2).to eq "Some string Name One"
  expect(class.method_3).to eq ["Name Two"]
end

method_1只是将名称添加到数组,然后method_3返回数组(在initialize方法中定义):

def method_1(name)
  @array << name
end

def method_3
  @array
end

我认为插入@array[0]到字符串中并用于@array.delete_at(0)修改数组将非常简单像这样:

def method_2
  p "Some string #{@array[0]}"
  @array.delete_at(0)
end

但是该方法返回"Name One"而不是字符串。如果我注释掉删除代码,则字符串将正确返回,但尚未修改我的数组。我已经在Ruby文档中工作了很长时间,但是#shift在返回已删除的项目时也遇到了同样的问题。

我几乎可以肯定我已经把这个复杂化了-我想念的是什么?

塔德曼

您可以将所有这些折叠为更常规的Ruby,如下所示:

class MyTestClass
  attr_reader :array

  def initialize
    @array = [ ]
  end

  def push(s)
    @array << s
  end

  def special_shift
    "Some string #{@array.shift}"
  end
end

然后在用法上:

it "starts the thing and move on" do
  my_thing.push("Name One")
  my_thing.push("Name Two")
  expect(my_thing.special_shift).to eq "Some string Name One"
  expect(my_thing.array).to eq ["Name Two"]
end

使用诸如pushshift与Ruby约定一致的名称可以使方法的目的和操作容易理解得多。

当涉及到实现时,method_3您会忘记可以在#{...}块中内联任何所需的内容,甚至包括修改事物的方法。p方法用于显示,它不会返回任何内容。要返回某项,您需要将其作为最后一项评估(隐式)或通过使用return(显式)进行评估

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从数组中删除项目而不返回它

来自分类Dev

从数组中删除项目而不循环

来自分类Dev

删除并返回数组中的所有项目

来自分类Dev

从数组中删除一个随机对象并返回它

来自分类Dev

从数组中删除项目

来自分类Dev

从数组中删除项目

来自分类Dev

根据条件从数组中删除特定项目,并在javascript中返回其他项目

来自分类Dev

如果单击了某个项目(并且以前已经将其添加到数组中),如何从该项目中删除它?

来自分类Dev

vuejs从数组中删除项目

来自分类Dev

从状态数组中删除项目

来自分类Dev

从数组中删除特定项目

来自分类Dev

如何从数组中删除项目

来自分类Dev

从数组结果中删除项目

来自分类Dev

如何删除变量的字符串,如果在数组中检查它后,它与数组键不匹配?

来自分类Dev

KnockoutJS:从数组中删除项目数组

来自分类Dev

KnockoutJS:从数组中删除项目数组

来自分类Dev

从函数返回动态数组后删除它

来自分类Dev

PagedListAdapter在RecyclerView中不返回任何项目

来自分类Dev

从CouchDB中的数组中删除项目

来自分类Dev

从Javascript Titan中的数组中删除项目

来自分类Dev

从PHP中的多维数组中删除项目

来自分类Dev

从Vuex中的数组中删除特定项目

来自分类Dev

无法从React中的数组中删除项目

来自分类Dev

在React中无法从数组中删除项目

来自分类Dev

从JavaScript中的数组中删除项目

来自分类Dev

在React中从状态数组中删除项目

来自分类Dev

从Javascript Titan中的数组中删除项目

来自分类Dev

从C函数中的数组中返回项目

来自分类Dev

删除列表中返回的项目之间的空格