显然是在ruby类中写的随机单词

时间:2014-01-06 11:42:44

标签: ruby

我遇到过这样的事情:

class OBRTestBase < Test::Unit::TestCase

    # some stuff here ...

    setup
    def obr_setup
        # more stuff here ...
    end

    # more stuff here ...

写的setup行是什么?您是否可以在类中编写任何单词,方法应该在哪里,而不是def@?它完成了什么?

我还找到了teardown这个词。可以写任何东西吗?是否有保留字列表?

3 个答案:

答案 0 :(得分:2)

想象一下这段代码

def setup
  puts "managing external connections"
  puts "doing setup work and throwing needed exceptions"
  puts "we have successfully found the mothership"
end

def verify
    puts "class A has successfully been defined"
end
class A
    setup
    def initialize
        puts "initializing a new a"
    end
    def foo
        puts "foo"
    end
    verify
end

puts "-----start of program-----"
a = A.new()
a.foo

我们需要在启动应用程序时连接到外部资源。我们希望在没有这些资源时事先得到通知。

运行这段代码将具有以下输出

managing external connections
doing setup work and throwing needed exceptions
we have successfully found the mothership
class A has successfully been defined
-----start of program-----
initializing a new a
foo
=> nil

除此之外,它还用于在类中定义公共和私有方法时启动新范围。

Class A
  public
  public_foo(x)
    ...
  end

  private
  private_bar(x)
    ...
  end
end

请注意,public_foo方法是在类定义上公开定义的。而不是在课堂设置的时候。

答案 1 :(得分:0)

在Ruby代码中,您编写方法,它们将按照读取的顺序执行。如果您编写setup(假设它是一种方法,因为如果它是局部变量则无用),在类OBRTestBase中,它将在OBRTestBase的上下文中执行。如果没有这样的方法或局部变量,那么它将引发错误。

答案 2 :(得分:0)

在此上下文中,

setup是一个在加载类时可用的方法。它可能通过多种方法注入当前环境。

要查找项目中定义此方法的位置,您可以打印该方法的源位置:

p method(:setup).source_location