왜 다음 부분은 # def games # @games = games # end
코드의 맨 끝 부분에 올 수 있습니까? 나는 루비가 코드를 위에서 아래로 읽는다고 생각했다. 상단에 games
을 정의하지 않으면 오류가 발생하지 않아야합니까?루비 코드 순서
class Library
# def games
# @games
# end
def initialize(games)
@games = games
end
def add_game(game)
games << game
end
# The following lines should come at the top of this code.
def games
@games
end
end
games = ['WoW','SC2','D3']
lib = Library.new(games)
lib.games #=> WoW,SC2,D3
lib.add_game('Titan')
lib.games #=> WoW,SC2,D3,Titan
게임이 정의되기 전에'games'를 호출하지 않으므로 작동합니다. – August
코드를 읽고 (메모리에 저장하고, 클래스를 설정하고, 메소드를 설정하는 것), 실행하는 것과는 차이가 있습니다. 실행/사용 중일 때 정의해야합니다. Ruby 나 Javascript와 같은 언어는 코드를 실행할 때 두 개의 별개의 단계를 가지며 첫 번째 (로드 및 설정)와 두 번째 (실제 실행)를 혼동하지 마십시오. 3 단 계는 런타임 중에 코드를 컴파일하고 프로파일 링하는 것입니다 (컴파일 할 부분을 결정하는 후자). 10 년 또는 2 년 전 수동으로 고정 바이너리를 작성해야했던 작업 ... 이제 모든 것 훨씬 더 역동적입니다. –
@ Mörre : 그 대답이어야합니다! – quetzalcoatl