【问题标题】:Value of global variable not showing when using puts使用 puts 时未显示全局变量的值
【发布时间】:2015-11-11 18:52:05
【问题描述】:

我编写了一个程序,它接收每天的股票价格数组,然后返回应该买入和卖出股票的日期。我有一个全局变量$negatives 显示买卖日。我想将此全局变量作为 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])

【问题讨论】:

    标签: ruby global-variables puts


    【解决方案1】:

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

    if index == array.size - 1
        exit
    end
    

    因为循环会自动退出。

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

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

    【讨论】:

    • 谢谢。我不需要返回$difference,但我会记住这一点。感谢您提供有关代码审查的提示,一旦我解决了这个问题,我就会这样做。
    • 您在这里问得对,CR 仅用于工作代码。让它在这里工作,在那里变得美丽!
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多