使用puts时未显示的全局变量的值

时间:2015-08-18 17:38:21

标签: ruby global-variables puts

我制作了一个程序,每天收集一系列股票价格,然后返回股票应该被买入然后卖出的日子。我有一个全局变量,$negatives显示买入和卖出日。我想将此全局变量作为我的puts语句的一部分返回。但是,目前没有任何东西出现。我没有看到我的看跌声明。知道发生了什么事吗?

def stock_prices array
        $largest_difference = 0
        array.each_with_index {|value, index|
            if index == array.size - 1
                exit
            end
            array.each {|i| 
                $difference = value -  i
                if ($difference <= $largest_difference) && (index < array.rindex(i))
                    $negatives = [index, array.rindex(i)]
                    $largest_difference = $difference
                end
            }   
        }
        puts "The stock should be bought and sold at #{$negatives}, respectively"
end

puts stock_prices([10,12,5,3,20,1,9,20])

1 个答案:

答案 0 :(得分:2)

您的代码存在一些问题。首先,exit退出整个程序。你真正想要的是break。除此之外,您甚至不需要检查,因此您应该删除

if index == array.size - 1
    exit
end

由于循环将自动退出。

最后,如果您希望函数返回$difference,则应将$difference放在函数的最后一行。

您的代码存在更多问题(似乎您有一个额外的循环,并且您应该使用do ... end来表示多行块),但进入它们似乎更适合Code Review Stack Exchange