Menu
CoddyTech

Select 与 Reject

本课属于 Coddy Ruby 学习旅程的“逻辑与流程”单元。第 21 课,共 56 课。

select 方法会返回一个新数组,其中只包含代码块返回真值的元素。这就是 Ruby 中“筛选”的写法。

numbers = [1, 2, 3, 4, 5, 6]
evens = numbers.select { |n| n.even? }
puts evens.inspect   # [2, 4, 6]

reject 与它相反,它会保留代码块返回 false 的所有元素:

odds = numbers.reject { |n| n.even? }
puts odds.inspect    # [1, 3, 5]

两者都会返回一个新数组,原数组不会被修改。

这个代码块只是一个谓词,任何结果为真或假的表达式都可以:

words = ["hi", "hello", "hey", "yo"]
long  = words.select { |w| w.length >= 3 }
puts long.inspect    # ["hello", "hey"]
challenge icon

挑战

入门

读取一个以逗号分隔的整数列表。输出两行:

  1. 大于 10 的数字(使用 select),并用 , 连接
  2. 不能被 3 整除的数字(使用 reject),并用 , 连接

输入 3,7,12,15,20 时,输出为:

12, 15, 20
7, 20

亲手试试

numbers = gets.chomp.split(",").map(&:to_i)

# TODO:第 1 行,将 numbers 中大于 10 的数用 ", " 连接
# TODO:第 2 行,将 numbers 中不能被 3 整除的数用 ", " 连接
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

逻辑与流程中的所有课

自己练习: Ruby 在线编译器