チェリー本 2章 その4

rubyの?で終わるメソッド
Rubyのメソッド名の中には?や!で終わるものが存在する。
?で終わるメソッドは真偽値を返すメソッドになる。

p "".empty?
p "abc".empty?

#引数に文字列が含まれているか??
p "watch".include?("at")
p "watch".include?("in")

=>
true
false
true
false

上のnil?やempty?は最初からrubyで定義されている。
rubyは自分で?で終わるメソッドを定義することが出来る。
真偽値を求める時は?を使うようにする。

def method_name?(x)
  p x == 1
end
method_name?(1)
method_name?(2)
method_name?(3)

=>
true
false
false

rubyの3つのライブラリー

組み込みライブラリー

rubyはあらかじめ数多くのライブラリーが標準で搭載されている。
例えばstring(文字列)、integer(数値)がある。

標準ライブラリー

組み込みではにが標準ライブラリー存在する。
Dateクラスとかが該当する。

外部ライブラリー(gem)

有志の開発者が作成してくれた外部ライブラリー

インストール不要

  • 組み込みライブラリー

    • string
    • integer
    • array
    • hash
  • 標準ライブラリー

インストール必要

  • 外部ライブラリー

require

標準ライブラリーはインストールは不要だが
標準ライブラリーとgem読み込み必要がある
次のような構文を使います。

require ライブラリー名

Dateクラスを使いたい時は...

require "date"
p Date.today
=>
#<Date: 2021-04-26 ((2459331j,0s,0n),+0s,2299161j)>

requireないと構文エラー
Traceback (most recent call last):
fizz_buzz.rb:1:in `<main>': uninitialized constant Date (NameError)
Did you mean?  Data  

require_relative

実行したいファイルのディレクトリからの相対パスで該当のファイルを探しに行くいまいちよくピンと来ないのでぐぐることにしました。

require require_relative
カレントディレクトリーを示す
./の記載が必要
カレントディレクトリを示す
./を付けなくていい

例えば...

# sample.rbがtest.rb読み込む時

require './test' #./が必要

sample = Sample.new
sample.test


# test.rb
class Sample
  def test
    puts '読み込みOK!'  
  end
end


#一方でrequire_relativeの場合
# sample.rb

require_relative 'test' #./省略可能!

sample = Sample.new
sample.test
Copy
# test.rb

class Sample
  def test
    puts '読み込みOK!'  
  end
end

1章を通してタメになるところはめちゃめちゃタメになりました。
中には難しい場所もあったけど繰り返しコード書きまくって覚えたいと思います。