这个while循环如何评估条件是真还是假?

时间:2016-11-20 05:12:21

标签: ruby

我创建了以下代码来进行冒泡排序,代码运行良好。我的问题是为什么它工作...当调用该方法时,我假设计算机将首先评估$ x是否等于0.但是我没有为$ x指定值,所以是什么让计算机启动运行每个循环?

似乎与x是一个全局变量这一事实有关,但我不确定如何。请提出建议!

def bubble_sort(arr)
    while $x != 0
        $x = 0
        arr.each_with_index do |i, j|
            if arr[j+1] != nil && i > arr[j+1]
            arr[j], arr[j+1] = arr[j+1], arr[j]
            $x += 1
            end
        end
    end
    arr
end

p bubble_sort([4,3,78,2,0,5,100,34])

1 个答案:

答案 0 :(得分:0)

我假设你只调用一次这个方法? ...

第一次调用期间全局$ x不存在,并且搜索该全局变量返回$(function() { var pgurl = window.location.href.substr(window.location.href .lastIndexOf("/")+1); $("navbar ul a").each(function(){ if($(this).attr("href") == pgurl || $(this).attr("href") == '' ) $(this).addClass("active"); }) });[![menu menu bare home is active now manually][1]][1]

因此,第一个nil循环将while评估为$x==0 nil == 0