考虑下面的代码块:
<I need to count this> this not <this yes> and <also this
现在调用方法a如下:
class A
def self.a(b)
if b > 0
b * b
end
end
end
为什么nil传递0作为参数?
答案 0 :(得分:1)
你应该修改你的方法,如果你想要返回除nil之外的任何其他内容,如@ cary-swoveland所提到的那样:
class A
def self.a(b)
if b > 0
b * b
else
puts 'Calculation not possible'
# or whatever you want your method to return
end
end
end
此外,如果您希望条件为零
,则可以将条件修改为if b >=0
答案 1 :(得分:0)
如果之前没有提到任何返回,则所有ruby方法默认返回last
语句/表达式。所以,在你的情况下,
A.a(0) #Last statement executed end, as 0 > 0 is false, without going in if. SO, it returns nothing, in other words null/nil.
根据@dstrants的规定,您可以添加else
来查看某些输出,或者您可以执行以下操作(不需要else
子句),
class A
def self.a(b)
if b > 0
return b * b
end
return "Value <= 0"
end
end
这将导致nil
以外的输出。
p.s。不要使用静态方法(self
方法),直到你绝对想要!