在Ruby中从数组中弹出特定元素的最简单方法是什么,类似于.p的.delete方法
a.delete(element)
不是弹出第一个/最后一个元素或使用.slice?
要更具体一点:例如,我可以做
case names.sample when "John", "Dave", "Sam"
a.delete(names.sample)
end
在a
中作为示例出现时,从names
中删除其中一个名称
但是,我打算使用多个样本,并且使用a.delete()
将一次删除所有元素,而不是像shuffle!.pop
那样连续弹出元素的结果那样连续删除,因此名称在选择相同名称作为a
name.sample
中选择作为样本
我想知道Ruby中最简单的方法是连续地弹出这些元素,或者在这种情况下是否有可能。
答案 0 :(得分:2)
Array
类定义一个pop
方法。它返回并删除数组中的最后一个元素。
a = ["a", "b", "c"]
puts a.pop #=> "c"
puts a #=> ["a", "b"]
您可以选择向pop
传递参数,该参数指定弹出多少个元素。
a = ["a", "b", "c"]
puts a.pop(2) #=> ["b", "c"]
puts a #=> ["a"]
在解决您的最后一条评论时,您可以使用include?
,index
和delete_at
方法来实现。假设您要检查数组中的“ b”:
a = ["a", "b", "c"]
value_index = a.index("b") #Returns the first occurring index of "b"
has_value = a.include?("b") #Returns whether "b" is in the list
a.delete_at(a.index("b")) if has_value #Removes "b" from the list
在此示例中,“ has_value”将是a
数组是否包含值“ b”,而“ value_index”将是第一个出现的“ b”。这也会从列表中删除值“ b”。
如果要删除出现的所有 个“ b”,可以将include?
,index
和delete_at
与while循环一起使用:>
a = ["a", "b", "c", "a", "b", "c"]
while a.include?("b")
a.delete_at(a.index("b"))
end
#a will now be ["a", "c", "a", "c"]
答案 1 :(得分:1)
[..]打算使用多个样本,并且使用
相同的名称后,无法再从中选择名称作为样本a.delete()
将一次删除所有元素,而不是像shuffle!.pop
连续弹出元素那样从name.sample
产生的结果那样连续删除,因此在选择与names = ["John", "Dave", "Sam"] names.size.times { p names.delete(names.sample) } #=> "Sam" #=> "John" #=> "Dave"
[..]
也许您正在寻找类似的东西?
public void button1(View view)
{
sendData("http://xx.xx.xx.xx/index2.php?field2=1");
}
public void button0(View view)
{
sendData("http://xx.xx.xx.xx/index2.php?field2=0");
}