2013-09-21 28 views
0

我在做Code Academy重构工厂:Less is More(Exercise 4)module。这里是该模块的说明:在代码学院停留在Ruby上

更少是更伟大的工作!这段代码看起来更好

但是,我们可以删除更多。回想一下,Ruby将隐含地返回 评估的最后一个表达式的值(即自动返回 )。在这个代码中有一个return语句,我们可以从显式变为隐式!

说明找到不必要的返回语句并将其删除。

提示:这是最后一个!这是因为如果输入不是一个正数,我们可能会返回早 ,除非 我们明确使用return关键字,否则我们不能提前返回。

我试图删除最后return声明和其他每个人,我得到一个错误。任何人都可以提供建议吗?

$VERBOSE = nil # We'll explain this at the end of the lesson. 
require 'prime' # This is a module. We'll cover these soon! 

def first_n_primes(n) 

    return "n must be an integer." unless n.is_a? Integer 

    return "n must be greater than 0." if n <= 0 

    prime_array ||= [] 

    prime = Prime.new 
    for num in (1..n) 
    prime_array.push(prime.next) 
    end 
    return prime_array 
end 

first_n_primes(10) 
+0

你是否删除了完整的最后一条语句或只是在语句中返回?前者不会工作。 – jtblin

+0

'(1..n)'中的数字'根本不是惯用的Ruby。 '要求'素'; Prime.first(10)'是。 – steenslag

+0

谢谢你,jtblin! – Roberto

回答

0

return prime_array删除return应该工作。

+0

谢谢你,左轮手枪! – Roberto