Ruby 如何比较零和整数?
在Ruby 2.4中,我的“if”语句中有一部分是这样的Ruby 如何比较零和整数?,ruby,null,integer,compare,conditional,Ruby,Null,Integer,Compare,Conditional,在Ruby 2.4中,我的“if”语句中有一部分是这样的 row_data.index{|x| DataHelper.my_function(x) } > num_var 不幸的是,如果“row|u data.index{| x | DataHelper.my_function(x)}”的计算结果为nil,则上述语句将因错误而终止。如果“row_data.index{| x | DataHelper.my_function(x)}”的值为nil,是否有任何方法重写上述内容以使其返回“fa
row_data.index{|x| DataHelper.my_function(x) } > num_var
不幸的是,如果“row|u data.index{| x | DataHelper.my_function(x)}”的计算结果为nil,则上述语句将因错误而终止。如果“row_data.index{| x | DataHelper.my_function(x)}”的值为nil,是否有任何方法重写上述内容以使其返回“false”?我不想在我的“if”语句之前将表达式存储在变量中,因为如果执行不到那里,我甚至可能不需要执行该语句。我觉得有一条直线,但我不知道它是什么。你可以利用
nil.to\u I
返回0
if row_data.index{ |x| DataHelper.my_function(x) }.to_i > num_var
# index is bigger than num_var
else
# index is smaller or equal to num_var
end
根据my_函数和num_var表示的内容,您可能还需要考虑
num_var==0
的情况,您可以利用nil.to_i
返回0
if row_data.index{ |x| DataHelper.my_function(x) }.to_i > num_var
# index is bigger than num_var
else
# index is smaller or equal to num_var
end
根据my_函数和num_var表示的内容,您可能还需要考虑
num_var==0
短路评估是两个重要原因
到s
,到i
等)可以使您暂时免于引发异常/错误,但有时可能会玩魔鬼把戏来打破您的条件,当条件的一个比较值来自-0
,“
,[]
等时,因此,考虑到您的代码在一段时间后可能无法持续足够长的时间,需要格外小心
例1
如果x.to\u i>-1逻辑检查使用转换值进入条件块(零
的情况下,0
),则在获得批准时,零
可能是危险的
您可能不介意ex.-1将nil
打印为:0不是负整数。这个怎么样
if x.to_i
puts " 1/x is" 1/x
end
它可以进一步提高ZeroDivisionError:每x除以0,即nil
,在这种情况下,您需要格外小心。可能你从一开始就不想在你的街区内娱乐nil
&&
)如果前面的条件为假
,使条件执行得更快,则不必担心后面的条件。此外,它还保护进入条件块的nil
值,使其更易受攻击if (not row_data.index{|x| DataHelper.my_function(x) }.nil?) && (row_data.index{|x| DataHelper.my_function(x) } > num_var)
# do your if block here
# this keeps nil away
else
puts "row_data.index{|x| DataHelper.my_function(x) } is nil"
end
短路评估是两个重要原因的关键
到s
,到i
等)可以使您暂时免于引发异常/错误,但有时可能会玩魔鬼把戏来打破您的条件,当条件的一个比较值来自-0
,“
,[]
等时,因此,考虑到您的代码在一段时间后可能无法持续足够长的时间,需要格外小心
例1
如果x.to\u i>-1逻辑检查使用转换值进入条件块(零
的情况下,0
),则在获得批准时,零
可能是危险的
您可能不介意ex.-1将nil
打印为:0不是负整数。这个怎么样
if x.to_i
puts " 1/x is" 1/x
end
它可以进一步提高ZeroDivisionError:每x除以0,即nil
,在这种情况下,您需要格外小心。可能你从一开始就不想在你的街区内娱乐nil
&&
)如果前面的条件为假
,使条件执行得更快,则不必担心后面的条件。此外,它还保护进入条件块的nil
值,使其更易受攻击if (not row_data.index{|x| DataHelper.my_function(x) }.nil?) && (row_data.index{|x| DataHelper.my_function(x) } > num_var)
# do your if block here
# this keeps nil away
else
puts "row_data.index{|x| DataHelper.my_function(x) } is nil"
end
我不知道如何将此应用于我的问题。将整数变量:row_data.index{| x | DataHelper.my_function(x)}替换为a,如果它是nill,它将短路循环而不执行第二部分,如果它不是nil,它将继续运行(a>num_var)我不知道如何把这个应用到我的问题上。把你的整数变量:row_data.index{| x | DataHelper.my_function(x)}代替a,如果它是nill,它将使循环短路,不执行第二部分,如果它不是nil,它将继续运行(a>num_var)这个好答案。您应该在
{
和|
。这确实有效,但我认为另一个答案应该被接受,原因如下。nil。to_I
有问题,接收函数需要一个整数,而不是真正的解决方法。单表达式一行是很好的,但如果逻辑受到阻碍,则不行。长话短说,如果你需要一个整数,请确保你收到一个整数。回答得好。你应该在{
和|
。这确实有效,但我认为另一个答案应该被接受,原因如下。nil。to_I
有问题,接收函数需要一个整数,而不是真正的解决方法。单表达式一行是很好的,但如果逻辑受到阻碍,则不行。长话短说,如果你需要一个整数,请确保e您收到一个整数。