我有以下数组:
passing_grades = ["A", "B", "C", "D"]
student2434 = ["F", "A", "C", "C", "B"]
Run Code Online (Sandbox Code Playgroud)
我需要验证student数组中的所有元素都包含在passing_grades数组中.在上面的场景中,student2434将返回false.但是这个学生:
student777 = ["C", "A", "C", "C", "B"]
Run Code Online (Sandbox Code Playgroud)
会回来的true.我尝试过类似的东西:
if student777.include? passing_grades then return true else return false end
Run Code Online (Sandbox Code Playgroud)
没有成功.任何帮助表示赞赏.
PASSING_GRADES = ["A", "B", "C", "D"]
def passed?(grades)
(grades - PASSING_GRADES).empty?
end
Run Code Online (Sandbox Code Playgroud)
类似于CDub但没有bug.在我看来更具可读性
您可以使用一种方法来处理数组的差异,如果存在任何结果,则它们不会传递:
PASSING_GRADES = ["A", "B", "C", "D"]
def passed?(grades)
grades.all? {|grade| PASSING_GRADES.include?(grade)}
end
Run Code Online (Sandbox Code Playgroud)
例:
1.9.3-p484 :117 > student777 = ["C", "A", "C", "C", "B"]
=> ["C", "A", "C", "C", "B"]
1.9.3-p484 :118 > passed?(student777)
=> true
1.9.3-p484 :118 > passed?(student2434)
=> false
Run Code Online (Sandbox Code Playgroud)