Ruby에서 예약어에 대해 혼란스러워합니다."begin"및 "end"예약어가 있습니까?
Matz이 공동 저술 한 "The Ruby Programming Language"에 따르면 begin
과 end
은 해당 언어의 예약어입니다. 블록을 표시하기 위해 구문 적으로 확실히 사용됩니다.
그러나, 언어의 범위 객체는 방법이 밖으로 테스트 지금
(1..10).end
=> 10
같이 end
을 begin
이름을 지정하고 한 나는, 참으로, 나는 "끝"시작 "이라는 방법을 정의 할 수 있습니다 것을 발견 "개체에, 비록 내가 변수를"시작 "이름을 지정하려고하면 실패합니다. (다음은 메소드 이름으로 사용하는 샘플 그래서 ... :) 실제로 작동
class Foo
def begin
puts "hi"
end
end
Foo.new.begin
있어,이 같은 예약어의 상태가 실제로 무엇인가, 내가 부탁 해요 생각? 나는 메소드 이름에 사용할 수 없다고 상상 했었을 것이다. (적어도 아직은 작동하는 것처럼 보인다.) 최소한 끔찍한 스타일 일 것이다. (실제로 Range 클래스의 핵심 언어로 사용된다.)
나는 그들이 언제 사용할 수 있는지에 대해 꽤 혼란 스럽다. 거기에 문서가 있습니까?
모든 "예약어"에 해당됩니까? 잘못된 스타일 인 경우 핵심 API가 왜 그렇게합니까? (직관적으로 그것은 끔찍한 스타일처럼 보이지만 실제로는 언어가 허용하는 끔찍한 것입니다.) 그리고 * *이 문서화되어 있습니까? – Perry
예약어와 같은 메서드를 사용하는 것이 의미가있을 수 있으므로 (IMHO'Range # end') 좋은 예입니다. 항상 흑백이 아닌 것은 대부분의 기능과 마찬가지로주의해서 사용하면 도움이 될 수 있습니다. 문서에 관해서는, 빠른 Google 검색은 http://www.tutorialspoint.com/ruby/ruby_syntax.htm을 열었습니다. "[t] hese 예약어는 상수 또는 변수 이름으로 사용되지 않을 수 있습니다. , 메서드 이름으로 사용 ", IMHO 완벽하게 이해합니다. –
공식적인 문서 인 것 같지 않습니다. (공식 문서에는이 문서에 대한 언급이 없지만 그것이 존재하지 않는다는 것을 의미하지는 않습니다.) – Perry