[英]Ruby class method behaviour
考虑下面的代码块:
class A
def self.a(b)
if b > 0
b * b
end
end
end
现在调用方法如下:
2.3.0 :015 > A.a(2)
=> 4
2.3.0 :016 > A.a(0)
=> nil
为什么在传递0作为参数时无效?
如果要返回除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
则可以将条件修改为if b >=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
。
ps在绝对要使用静态方法之前,不要使用静态方法( self
方法)!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.