Array.select 方法
在上一篇文章中,我们已经看到如何迭代 Array 类的实例?我们已经看到,为此我们有像 Array.each、Array.reverse_each 和 Array.map 这样的方法。在本文中,我们将了解 Array.select 的实现。
Array.select 方法,顾名思义,用于从Array 中选择一些元素。此方法是非破坏性的,不会给 Array 对象的实际值带来任何变化。此方法基于您将在括号内提供的某些条件起作用。此方法基于您在块内提供的条件。如果您未在块内指定任何条件,则此方法将不起作用。虽然它不会抛出异常,但结果是 nil。因此,如果您正在使用此方法,您应该具有某些条件,基于这些条件将从 Array 类的对象中选择元素。如果你想打印 Array 实例的所有元素,那么你可以使用 Array.each 方法并避免使用这个方法。
用法:
Array.select{|var| #condition}
参数:
此方法不允许传递任何参数,而是强制要求一个条件。
范例1:
=begin
Ruby program to demonstrate Array.select
=end
# array declaration
num = [2,44,2,5,7,83,5,67,12,11,90,78,9]
puts "Enter 'a' for Even numbers and 'b' for odd numbers"
opt = gets.chomp
if opt == 'a'
puts "Even numbers are:"
puts num.select{|num|
num%2 == 0
}
elsif opt == 'b'
puts "Odd numbers are:"
puts num.select{|num|
num%2 !=0
}
else
puts "Wrong selection. Input valid option"
end
输出
RUN 1: Enter 'a' for Even numbers and 'b' for odd numbers a Even numbers are: 2 44 2 12 90 78 RUN 2: Enter 'a' for Even numbers and 'b' for odd numbers b Odd numbers are: 5 7 83 5 67 11 9
说明:
在上面的代码中,您可以观察到我们正在从用户那里获取关于用户想要什么类型的数字作为输出的输入。这是因为我们想在 Array.select 方法中传递某些条件。我们根据用户提供的选项向用户提供响应,并且此方法仅以这种方式使用。
范例2:
=begin
Ruby program to demonstrate Array.select
=end
# array declaration
num = [2,44,2,5,7,83,5,67,12,11,90,78,9]
puts num.select{|a|}
输出
# no o/p
说明:
在上面的输出中,您可以观察到,当您没有在方法中指定任何条件时,您将不会获得任何输出。
相关用法
- Ruby Array.sort用法及代码示例
- Ruby Array.sort_by用法及代码示例
- Ruby Array.shift用法及代码示例
- Ruby Array.slice()用法及代码示例
- Ruby Array.shuffle用法及代码示例
- Ruby Array.sample()用法及代码示例
- Ruby Array.reject用法及代码示例
- Ruby Array.repeated_permutation()用法及代码示例
- Ruby Array.index()用法及代码示例
- Ruby Array.pack()用法及代码示例
- Ruby Array.rassoc(obj)用法及代码示例
- Ruby Array.values_at()用法及代码示例
- Ruby Array.each用法及代码示例
- Ruby Array.unshift()用法及代码示例
- Ruby Array.reverse用法及代码示例
- Ruby Array.rotate()用法及代码示例
- Ruby Array.repeated_combination()用法及代码示例
- Ruby Array.replace()用法及代码示例
- Ruby Array.drop_while用法及代码示例
- Ruby Array.assoc(obj)用法及代码示例
注:本文由纯净天空筛选整理自 Array.select Method with Example in Ruby。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。