반응형
`if __name__ == '__main __'`루비에서 동일
저는 Ruby를 처음 사용합니다. 별도로 계속 사용하려는 도구가 포함 된 모듈에서 함수를 가져 오려고합니다. 파이썬에서는 간단히 이렇게합니다.
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
이 날 프로그램을 실행하거나 사용하는 모듈로 가져올 수 있습니다 a()
및 / 또는 b()
별도. Ruby에서 동등한 패러다임은 무엇입니까?
내가 야생에서 본 Ruby에서 (톤이 아니라 허용됨) 이것은 표준 Ruby 디자인 패턴이 아닙니다. 모듈과 스크립트는 분리되어 있어야하므로이 작업을 수행하는 훌륭하고 깨끗한 방법이 없다고해도 놀라지 않을 것입니다.
편집 : 찾았습니다.
if __FILE__ == $0
foo()
bar()
end
그러나 그것은 확실히 일반적이지 않습니다.
스택 트레이스가 비어 있으면 오른쪽과 왼쪽으로 실행할 수 있습니다. 약 1 주일 동안 Ruby를 사용했기 때문에 그것이 관습 적으로 사용되는지 또는 비 관습 적으로 사용되었는지 모르겠습니다.
if caller.length == 0
# do stuff
end
개념의 증거:
파일 : test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
파일 : shmest.rb
#!/usr/bin/ruby -I .
require 'test.rb'
puts "Shmest"
용법:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test
참고 URL : https://stackoverflow.com/questions/2249310/if-name-main-equivalent-in-ruby
반응형
'programing tip' 카테고리의 다른 글
JSON 결과에서 함수를 정의하는 것이 유효합니까? (0) | 2020.08.24 |
---|---|
std :: shared_ptr 스레드 안전성 설명 (0) | 2020.08.24 |
R이 회귀에서 지정된 요인 수준을 참조로 사용하도록 강제하는 방법은 무엇입니까? (0) | 2020.08.23 |
Java에는 한때 Pair 클래스가 없었습니까? (0) | 2020.08.23 |
상위 디렉터리를 나타내는 Maven2 속성 (0) | 2020.08.23 |