2013-02-13 3 views
0

루비 파일 (Bar.rb을)하는 방법을 실행나는이 더미 루비 클래스 파일이

$ ruby Bar.rb 

내가 안녕하세요 "를 참조 기다리고 있었다, world "명령을 사용했지만이 오류가 발생했습니다.

undefined local variable or method `foo' for Bar:Class (NameError) 
    from bar.rb:3:in `<main>' 

어떻게 방법을 실행할 수 있습니까? Ruby에는 어떤 main 메소드가 있습니까 (예 : Java 또는 C/C++)?

답변

1

작성한대로 작동하지 않는 몇 가지 이유가 있습니다.

  1. foo 메서드는 호출하기 전에 선언되지 않았습니다.
  2. foo는 선언 한대로 인스턴스 메소드입니다. 당신은 클래스의 인스턴스에서 호출하지 않습니다.

이 작동합니다 : 다른 사람이 말했듯이

class Bar 
    def self.foo 
    end 

    foo 
end 

하지만, 당신은 아마 수업이 포장 할 필요가 없습니다.

+0

예, 메소드가 클래스 메소드 (Java 용어로 정적 메소드) 여야합니다. – user1508893

1

먼저 메서드를 정의한 다음 호출합니다. 주 프로 시저가 필요하지 않으므로 클래스 또는 메서드 외부의 첫 번째 코드가 먼저 실행됩니다. 스크립트 자체가 기본 스크립트입니다. 이 점에 대한 더 나은 정의가있을 것이라고 확신하지만, 확신 할 수있을 것입니다.

def foo() 
    puts "Hello world, " 
end 

foo() # execute 

또한 이것을 클래스에 넣을 필요가 없으면 먼저 그녀를 시작해야합니다.

class Bar 
    def foo() 
     puts "Hello world, " 
    end 
end 

bar = Bar.new 
bar.foo 
+0

카우보이 총격과 ​​같은 질문 - 속도에 관한 모든 것입니다. – Anton

1

당신은 어떤 클래스를 필요가 없습니다, 당신은 당신이 바로 파일 자체에서 원하는 메서드를 호출 할 수 있습니다 :

bar.rb :

puts "Hello, world!" 

당신이 고수 할 경우 코드를 호출하기 전에 분명히 작동하지 않는 선언 앞에 foo을 호출하고 있습니다.