在Ruby中明确指定默认方法目标?

时间:2009-12-10 19:17:33

标签: ruby

在明确指定方法目标时,Ruby中是否有最佳实践,即使在不必要时也是如此?

class Foo
    def meth1
        puts "bar"
    end

    def meth2
        # is this better?
        self.meth1

        # or this?
        meth1
    end
end

2 个答案:

答案 0 :(得分:8)

不,这只是一个风格问题。

唯一要记住的是,您必须始终为setter方法指定目标。

foo_count = 4 #creates a local variable named foo_count and sets it to 4
self.foo_count = 4 #sends foo_count=(4) to self

如果你碰巧有一个与你的班级方法同名的局部变量,同样的规则适用,不过我会说这本身就是一种不好的做法。

答案 1 :(得分:1)

正如Chuck先前所说的那样,除了他指出的异常以及使用私人方法时,这主要是风格问题。只要您在对象中使用私有方法,就必须离开self.业务。

例如:

class Tze
  def meth2
    meth1
  end

  def meth3
    self.meth1
  end

  private
  def meth1
    puts "method 1 invoked"
  end
end

调用Tze.new.meth2会产生预期的输出;但是,由于Tze.new.meth3被调用为meth1,因此调用self.meth1会引发错误。