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

Value of global variable not showing when using puts

我制作了一个程序,它接收每天的一系列股票价格,然后 returns 股票应该买入然后卖出的日期。我有一个全局变量,$negatives 显示买卖日。我想 return 这个全局变量作为我的 puts 语句的一部分。但是,目前没有任何显示。我没有看到我的 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])

您的代码有几处错误。首先,exit退出整个程序。您真正要找的是break。除此之外,你甚至不需要那张支票,所以你应该删除

if index == array.size - 1
    exit
end

因为循环会自动退出。

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

你的代码有更多问题(好像你有一个额外的循环,你应该对多行块使用 do...end),但进入它们似乎更适合 Code Review Stack Exchange.