我正在使用Rubymonk.com学习Ruby
以下是项目说明:
招聘程序员 - Ruby中的布尔表达式
让我们假设您正在为新创业公司招募团队成员!给定一个候选者,你需要一个表达式来告诉你它们是否适合某些类型。这是候选对象的外观:
candidate.years_of_experience = 4
candidate.github_points = 293
candidate.languages_worked_with = ['C', 'Ruby', 'Python', 'Clojure']
candidate.applied_recently? = false
candidate.age = 26
我们希望聘请经验丰富的Ruby程序员。我们理想的候选人有2年或更多年的经验,但有些程序员甚至在此之前变得非常好。我们将考虑他们的Github积分(一个优秀的程序员的一个很好的指标),即使他们没有经验,具有500 Github积分或更多的候选人也可以申请。还有一个问题:Ruby是一种很酷且令人敬畏的语言,很多聪明的年轻人都非常擅长。我们喜欢那些孩子,但对于这项特殊的工作,我们宁愿让他们在学校学习而不是工作。让我们筛选出年龄小于15岁的候选人。此外,我们不想考虑最近申请参加此次开幕的候选人。
基于以上描述,我得出结论,下面列出的项目必须为真:
我的答案是:
is_an_experienced_programmer = (candidate.years_of_exprience >= 2
|| candidate.github_points >= 500) && candidate.languages_worked_with.include? 'Ruby'
&& (candidate.age > 15) && !(candidate.applied_recently?)
然后回答是:
is_an_experienced_ruby_programmer = (candidate.years_of_experience >= 2
|| candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby')
&& ! (candidate.age < 15 || candidate.applied_recently?)
我的答案和答案之间的唯一区别是:
(candidate.age > 15) && !(candidate.applied_recently?)
上面说候选人必须年龄超过15岁并且最近没有申请。
和答案:
! (candidate.age < 15 || candidate.applied_recently?)
上面的代码基本上说,候选人不能小于15岁并且最近没有申请。
它们不一样吗?或者我的逻辑中有什么缺陷?
答案 0 :(得分:0)
你唯一缺少的就是&gt; =
(candidate.age >= 15) && !(candidate_applied_recently?)
这就是为什么你可能得错了答案。
希望它有所帮助。
答案 1 :(得分:0)
我得出结论,测试逻辑与RubyMonk上的项目有关: 当我使用下面的代码时,我通过了测试:
is_an_experienced_ruby_programmer = (candidate.years_of_experience >= 2 || candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby') && !candidate.applied_recently? && (candidate.age > 15)
当我在下面使用时,我没有通过测试:
is_an_experienced_programmer = (candidate.years_of_exprience >= 2 || candidate.github_points >= 500) && (candidate.languages_worked_with.include? 'Ruby') && (candidate.age > 15) && !(candidate.applied_recently?)
所以
!(candidate.applied_recently?) && (candidate.age > 15)
与
不同(candidate.age > 15) && !(candidate.applied_recently?)
在Rubymonk心中?