require 와 Dir[File.dirname(__FILE__)~ 의 차이
다른 파일을 읽을 때
require
그렇게 잘 갔습니다만, 음색을 타고 Dir[File.dirname(__FILE__)〜
를 사용하려고 해도 빠졌으므로 (5시간 정도) 비망록에 써 둡니다.나의 teratail 에서의 상호 작용 봐 주시면 나의 스킬의 낮음과 서서히 이해해 나가는 길을 알 수 있으므로 좋으면 봐 주세요.
htps : // 놀라운 l. 코 m / 쿠에 s 치온 s / 202510
잘 갔을 때 스쿠쇼
5개의 탭은 모두 같은 계층입니다.
require 로 각 파일을 호출해 main.rb
로 출력. 스쿠쇼 하부의 「종류:Honda」등이 나오면 OK. Paiza.io를 사용하면 쉽게 테스트할 수 있습니다.
잘했을 때 파일 내용
main.rb# main.rb
require_relative "car" #上から順番に読み込む
require_relative "ferrari"
require_relative "honda"
require_relative "nissan"
def main
cars = [] # cars にデータを追加
cars << Honda.new("Honda",8, 100, 10) # << は追加するという意味
cars << Nissan.new("Nissan",5, 50, 10)
cars << Ferrari.new("Ferrari",2, 2_000, 100)
cars.each do |car| # car の情報を全て表示
puts car
end
end
main # 出力
car.rb# car.rb
class Car
def initialize(type,capacity, price, speed) # この4つは具体例を記入するから initialize
@type = type
@capacity = capacity
@price = price
@speed = speed
end
def accel
"アクセル"
end
def brake
"ブレーキ"
end
def to_s
" 種類:#{@type}、定員:#{@capacity}人、価格:#{@price}万円、加速:#{@speed}km、装備:#{accel}、#{brake} "
end
end
ferrari.rbclass Ferrari < Car
end
honda.rbclass Honda < Car
end
nissan.rbclass Nissan < Car
end
이 상황에서 터미널에서 $ ruby main.rb
를 치면 첫 번째 스쿠쇼처럼 출력됩니다.
막히는 예
require_relative "car"
를 가장 마지막으로 하면 에러 발생.
불러오는 순서를 의식하지 않으면 안 되네요.
같은 계층에 모든 파일이 있는 경우(이중으로 출력된다)
Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
를 사용하는 경우에 main.rb
가 다른 파일과 모두 같은 계층이라면 (lib 폴더를 만들지 않고 첫 번째 스쿠쇼처럼 모두 같은 계층으로 하고 있는 경우),
① Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
가 모든 파일을 읽는다(동계층의 5개의 파일, 1장째의 스쿠쇼 참조)
② 한층 더 main 로 실행할 때, main.rb
를 다시 한번 읽어들여 이중으로 출력된다. ( main.rb
을 두 번 읽고 있습니다)
아래의 스쿠쇼와 같이 같은 계층에 파일을 옮겨 Dir〜
로 읽어들여 실행(터미널이라면 $ ruby main.rb
)하면
같은 계층에 파일을 옮겨 Dir〜
로 읽으면 아래의 스쿠쇼와 같이 이중으로 출력됩니다
【해결책】Dir ~ 를 사용하는 경우는 폴더를 만든다
teratail의 교환으로 알 수 있듯이 초절고전했습니다.
결론은 실행 파일 이외 (여기서 main.rb
이외)는 새로운 폴더를 만들어 거기에 저장. 나는 lib 폴더를 만들었습니다.
lib 폴더로 main.rb
이외의 파일을 옮긴 후 $ ruby main.rb
로 제대로 출력되었습니다.
아무튼 결론, 내 지식 부족이었기 때문에 더 공부가 필요합니다.
Reference
이 문제에 관하여(require 와 Dir[File.dirname(__FILE__)~ 의 차이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki0714/items/e3cb693e150168c07c0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
main.rb
# main.rb
require_relative "car" #上から順番に読み込む
require_relative "ferrari"
require_relative "honda"
require_relative "nissan"
def main
cars = [] # cars にデータを追加
cars << Honda.new("Honda",8, 100, 10) # << は追加するという意味
cars << Nissan.new("Nissan",5, 50, 10)
cars << Ferrari.new("Ferrari",2, 2_000, 100)
cars.each do |car| # car の情報を全て表示
puts car
end
end
main # 出力
car.rb
# car.rb
class Car
def initialize(type,capacity, price, speed) # この4つは具体例を記入するから initialize
@type = type
@capacity = capacity
@price = price
@speed = speed
end
def accel
"アクセル"
end
def brake
"ブレーキ"
end
def to_s
" 種類:#{@type}、定員:#{@capacity}人、価格:#{@price}万円、加速:#{@speed}km、装備:#{accel}、#{brake} "
end
end
ferrari.rb
class Ferrari < Car
end
honda.rb
class Honda < Car
end
nissan.rb
class Nissan < Car
end
이 상황에서 터미널에서
$ ruby main.rb
를 치면 첫 번째 스쿠쇼처럼 출력됩니다.막히는 예
require_relative "car"
를 가장 마지막으로 하면 에러 발생.
불러오는 순서를 의식하지 않으면 안 되네요.
같은 계층에 모든 파일이 있는 경우(이중으로 출력된다)
Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
를 사용하는 경우에 main.rb
가 다른 파일과 모두 같은 계층이라면 (lib 폴더를 만들지 않고 첫 번째 스쿠쇼처럼 모두 같은 계층으로 하고 있는 경우),
① Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
가 모든 파일을 읽는다(동계층의 5개의 파일, 1장째의 스쿠쇼 참조)
② 한층 더 main 로 실행할 때, main.rb
를 다시 한번 읽어들여 이중으로 출력된다. ( main.rb
을 두 번 읽고 있습니다)
아래의 스쿠쇼와 같이 같은 계층에 파일을 옮겨 Dir〜
로 읽어들여 실행(터미널이라면 $ ruby main.rb
)하면
같은 계층에 파일을 옮겨 Dir〜
로 읽으면 아래의 스쿠쇼와 같이 이중으로 출력됩니다
【해결책】Dir ~ 를 사용하는 경우는 폴더를 만든다
teratail의 교환으로 알 수 있듯이 초절고전했습니다.
결론은 실행 파일 이외 (여기서 main.rb
이외)는 새로운 폴더를 만들어 거기에 저장. 나는 lib 폴더를 만들었습니다.
lib 폴더로 main.rb
이외의 파일을 옮긴 후 $ ruby main.rb
로 제대로 출력되었습니다.
아무튼 결론, 내 지식 부족이었기 때문에 더 공부가 필요합니다.
Reference
이 문제에 관하여(require 와 Dir[File.dirname(__FILE__)~ 의 차이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki0714/items/e3cb693e150168c07c0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
를 사용하는 경우에 main.rb
가 다른 파일과 모두 같은 계층이라면 (lib 폴더를 만들지 않고 첫 번째 스쿠쇼처럼 모두 같은 계층으로 하고 있는 경우),①
Dir[File.dirname(__FILE__) + '/lib/*.rb'].sort.each {|file| require file }
가 모든 파일을 읽는다(동계층의 5개의 파일, 1장째의 스쿠쇼 참조)② 한층 더 main 로 실행할 때,
main.rb
를 다시 한번 읽어들여 이중으로 출력된다. ( main.rb
을 두 번 읽고 있습니다)아래의 스쿠쇼와 같이 같은 계층에 파일을 옮겨
Dir〜
로 읽어들여 실행(터미널이라면 $ ruby main.rb
)하면같은 계층에 파일을 옮겨
Dir〜
로 읽으면 아래의 스쿠쇼와 같이 이중으로 출력됩니다【해결책】Dir ~ 를 사용하는 경우는 폴더를 만든다
teratail의 교환으로 알 수 있듯이 초절고전했습니다.
결론은 실행 파일 이외 (여기서 main.rb
이외)는 새로운 폴더를 만들어 거기에 저장. 나는 lib 폴더를 만들었습니다.
lib 폴더로 main.rb
이외의 파일을 옮긴 후 $ ruby main.rb
로 제대로 출력되었습니다.
아무튼 결론, 내 지식 부족이었기 때문에 더 공부가 필요합니다.
Reference
이 문제에 관하여(require 와 Dir[File.dirname(__FILE__)~ 의 차이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kazuki0714/items/e3cb693e150168c07c0e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(require 와 Dir[File.dirname(__FILE__)~ 의 차이), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kazuki0714/items/e3cb693e150168c07c0e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)