当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Array.delete_if用法及代码示例


Ruby Array.delete_if 方法

在上一篇文章中,我们研究了 Array 方法,即 Array.select、Array.reject 和 Array.drop_While,所有这些方法都是非破坏性方法,这意味着它们不会对驻留在数组实例。如果你想让上面的方法具有破坏性,你可以在方法名称后添加一个"!"。例如,Array.select!是 Array.select 的破坏性版本。

在本文中,我们将了解本质上已经具有破坏性的 Array 方法 Array.delete_if。

方法说明:

这种方法造成的变化总是永久性的,因为它是一种破坏性方法。此方法的用法方式是,如果它找到不满足该方法块内指定的布尔条件的元素,则它会从 Array 实例中删除该元素。如果没有找到方法块内指定的布尔条件,它不会删除任何元素。

用法:

    Array.delete_if{|var|#condition}

参数(s):此方法不接受任何参数,而是需要一个布尔条件进行操作。

范例1:

=begin
    Ruby program to demonstrate Array.delete_if
=end

# array declaration
num = [1,2,3,4,5,6,7,8,9,10,23,11,33,55,66,12]

# input
puts "Enter the your choice (a)delete odd numbers (b) delete even numbers"
lm = gets.chomp

if lm == 'a'
    puts "Even numbers are:"
    puts num.delete_if { |a| a % 2 !=0 }
elsif lm == 'b'
    puts "Odd numbers are:"
    puts num.delete_if { |a| a % 2 ==0 }
else
	puts "Invalid Input"
end

输出

RUN 1:
Enter the your choice (a)delete odd numbers (b) delete even numbers
a
Even numbers are:
2
4
6
8
10
66
12

RUN 2:
Enter the your choice (a)delete odd numbers (b) delete even numbers
b
Odd numbers are:
1
3
5
7
9
23
11
33
55

说明:

在上面的代码中,您可以观察到该方法正在删除所有满足 Array.delete_if 方法块内提供的条件的元素。如果用户要求删除奇数,则输出显示在 RUN2 中,当用户要求删除偶数时,输出显示在 RUN1 中。

范例2:

=begin
    Ruby program to demonstrate Array.delete_if
=end
# array declaration
num = [1,2,3,4,5,6,7,8,9,10,23,11,33,55,66,12]

print num.delete_if{|a|}
puts ""
print num

输出

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, 11, 33, 55, 66, 12]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 23, 11, 33, 55, 66, 12]

说明:

在上面的代码中,您可以观察到,如果您没有在方法块内指定任何条件,那么它不会从 Array 实例中删除或移除任何元素。



相关用法


注:本文由纯净天空筛选整理自 Array.delete_if Method with Example in Ruby。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。