當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Ruby Array.keep_if用法及代碼示例


Ruby Array.keep_if 方法

在上一篇文章中,我們研究了 Array 方法,即 Array.select、Array.reject 和 Array.drop_while,所有這些方法都是非破壞性方法,這意味著它們不會對駐留在數組實例。如果想讓上述方法具有破壞性,可以在方法名稱後添加 “!”。例如,Array.select!是 Array.select 的破壞性版本。我們還了解了 Array.delete_if 方法,該方法本質上已經具有破壞性。

在本文中,我們將了解 Array 方法 Array.keep_if,它與 delete_if 方法一樣具有破壞性。

方法說明:

此方法用於同時從 Array 類的實例中選擇元素。此方法與 Array.delete_if 方法正好相反,因為 Array.delete_if 方法從 Array 中刪除不滿足塊內部提供的條件的元素,另一方麵 Array.keep_if 方法保留或保存滿足內部指定條件的元素方法的塊。如果您未在塊內指定或提供任何條件,則此方法將從 Array 實例中刪除所有元素。

用法:

    Array.keep_if{|var|#condition}

參數:此方法不接受任何參數,而是需要一個布爾條件進行操作。

範例1:

=begin
    Ruby program to demonstrate Array.keep_if
=end

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

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

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

輸出

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

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

說明:

在上麵的代碼中,您可以觀察到該方法正在保留滿足 Array.keep_if 方法塊內提供的條件的所有元素。如果用戶要求保留奇數,則輸出在 RUN 2 中顯示,當用戶要求偶數時,輸出在 RUN 1 中顯示。

範例2:

=begin
    Ruby program to demonstrate Array.keep_if
=end

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

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

輸出

[]
[]

說明:

在上麵的代碼中,您可以觀察到,如果您沒有在方法塊內指定任何條件,那麽它正在刪除或移除 Array 實例中的所有元素。



相關用法


注:本文由純淨天空篩選整理自 Array.keep_if Method with Example in Ruby。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。