Ruby类方法行为

时间:2018-02-10 18:26:32

标签: ruby

考虑下面的代码块:

<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作为参数?

2 个答案:

答案 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方法),直到你绝对想要!