2016-07-14 1 views
0

내 루비 스크립트에 다음과 같은 줄이 있습니다. 이 스크립트를 실행하면 출력은 main이됩니다. 하지만 나는 그 main에 액세스 할 수 없습니다. 나는이게 뭔지 모르겠다.루비에서 "메인"이란 무엇입니까?

개체 또는 인스턴스입니까? 예를 들어

:

puts self #=> main 

난은 "메인"은 "미정 로컬 변수 또는 방법"과 같은 오류를 제공 수단에 액세스하는 경우.

이전에는이 ​​자체를 사용하여 클래스 내에서 현재 객체를 인쇄했습니다. 예를 들어 : 여기

class Ex 
    puts self #=> Ex 
end 

, 내가 현재의 클래스 이름을 가져 그 자체 개체를 사용할 수 있습니다. 후에이 Ex 클래스에 액세스 할 수 있습니다. 그러나 첫 번째 예에서 은 main을 반환합니다. 그러나 나는 그것에 접근 할 수 없다. 그렇다면 이유가 무엇입니까 ?

+2

같은 질문이 [여기] (http://stackoverflow.com/questions/917811/what-is-main-in-ruby) 질문되었습니다. –

+0

모든 것이 루비의 객체이고 나는 * 모든 것을 의미합니다. 여기에는 프로그램의 "기본"컨텍스트가 포함됩니다. – tadman

답변

1

짧은 답변 :

Main 특별한 특성을 가진 특수 목적입니다.

더 많은 정보 :

당신은 테마를 감동은 Introspection을했다. 어떤 정보 위키 피 디아 그것에 대해 제공 :

컴퓨팅에서

입력 반성 런타임시 객체의 유형 또는 속성을 검사 에 프로그램의 기능입니다.

그래서 무엇을하고있는 것은 introspection입니다.

이동을 더 멀리 할 수 ​​있습니까?

puts self.class 

이것은 Object이됩니다. 따라서 중요한 것은 다음과 같습니다.

Ruby의 모든 요소는 특정 개체의 컨텍스트에서 발생합니다.

그래서 대답은 disclose this입니다.

+0

루비 (Ruby)는 일반적으로 컴퓨터 과학에서 많은 일들과 거의 같은 것을 의미하지만이 "반사"를 호출합니다. – tadman

+0

@tadman이 의견을 보내 주셔서 감사합니다. 내 답변을 업데이트해야합니까? –

+0

틀렸어. Ruby 세계에서 사용되는 로컬 용어에 대해 이야기하고 있습니다. – tadman

1

Ruby의 키워드 self는 현재 객체에 대한 액세스 권한을 제공합니다. 당신의 원인에서, Ex는 Ex의 인스턴스가 아닌 클래스입니다. 그러나, 모든 진술은 메인 루비의 개체로 실행되고 메인은 가장 외부의 객체가됩니다. 지금 들어 성명은 메인, 즉 메인이 가장 안쪽의 객체입니다. 따라서 puts self는 출력으로 main을 인쇄합니다. 자세한 내용은 연구에 대한

:

https://www.jimmycuadra.com/posts/self-in-ruby/

관련 문제