アマグラミング

プログラミング初心者が勉強したことを復習とメモがてら書いているだけです。

(77)require,require_relativeメソッドでライブラリを読み込みましょう

プログラムの一部を、別のプログラムの中で使いまわしたいことがあります。

 

ほとんどのプログラミング言語では。別々のファイルに分割されたプログラムを組み合わせて、一つのプログラムとして利用するための機能を持っています。

 

他のプログラムを利用するためのプログラムをライブラリと言います。

 

ライブラリを読み込むには

requireメソッドまたはrequire_relativeメソッドを使います。

 

書き方としては、

require ライブラリのファイル名

require_relative ライブラリのファイル名

 

ライブラリのファイル名の.rbは省略可

 

requireメソッドを呼び出すと引数に指定されたライブラリを探して、

そのファイルを読み込みます。

Rubyと一緒にインストールされた、あらかじめ決められている場所から探し出して

読み込んでくれるメソッド。

 

require_relative は実行するファイルを基準にして(おそらく同一のファルダ?)

ライブラリを探します。

プログラムを複数に記述して分けた場合など、読み込むのに便利です。

 

def abc(pattern,filename)

file = File.open(filename)

file.each_line do |line|

if pattern =~ line
print line
end
end
file.close

end

 

これを保存します。z1.rbって名前にしました。

 

require_relative "z1"

 

pattern = Regexp.new(ARGV[0])

filename = ARGV[1]

abc(pattern,filename)

 

これを保存してz2.rbとして、実行

 

引数にはマッチングを探したい値と、そのファイル名を渡します。

実行すると

f:id:tiroru17:20170625114630p:plain

 

こんな感じです。

 

要は前回やったことをファイルを分割して、require_relativeメソッドを使って

読み込んで同じことをしたわけです。

z2.rbでz1.rbを読み込んで、メソッドとして定義したabcを呼び出しています。

このabcはz1の方に書いているわけで、

読み込んで、abcメソッドに実引数としての値をARGVで渡して代入した引数という形で渡しているという・・・

ことだと思います。多分。

 

まあ、メソッド書いてあるファイル読み込んで、z2の方でメソッド呼び出したって

いう単純なことですよね。

 

内容うんぬんはその時々でしょうし。

とにかく読み込めたということですね。

 

requireメソッドのほうは、標準で入っているライブラリを呼び出す時に使う

わけです。

 

まあ、またの機会で。