search
LoginSignup
0
Help us understand the problem. What are the problem?

posted at

[Ruby]moduleのメソッド定義についての学習記録

まえがき

Web系エンジニア転職を目指して学習しております。
今回は「プロを目指す人のためのRuby入門」という書籍で学習している私の振り返り記録になります。
学習した内容全てではなく、一部分を取り上げて記録しております。
書籍の内容を記載しすぎるのは問題であると認識し、配慮しておりますが問題がある部分がありましたらご指摘頂けると幸いです。

include?メソッド

呼び出したクラスオブジェクトに引数で渡したモジュールがincludeされているかをtrue or falseのBooleanで返す。include?メソット自体はStringクラスとArrayクラスにも同名のメソッドが定義されていますがあくまで今回のinclude?メソッドはClassクラスで定義しているinclude?メソッドと認識しています。この認識が正しいかは分からなかったので知っている方がいたらコメントで教えて頂きたいです。

module Profile
end

class User
  include Profile
end

User.include?(Profile)
# true
User.include?(Introduce)
# false

Enumerableモジュール

配列やハッシュ、範囲(Range)など、何かしらの繰り返し処理ができるクラスにincludeされているモジュールです。
=> 「プロを目指す人のためのRuby入門」から抜粋

includeしているクラスでeachメソッドが定義されていればEnumerableモジュールで定義してあるメソッドを使用することが出来ます。
調べてみると私が知っているメソッドではcount, filter, find, select, sortなどがありました。
つまり、これらのメソッドが使用出来ていたのはクラス側でEnumerableモジュールをincludeしているからと理解することが出来ました。

Comparableモジュール

比較演算を可能にする(つまり値の大小を判定できるようにする)モジュール。
=> 「プロを目指す人のためのRuby入門」から抜粋

includeしているクラスで<=>(宇宙演算子)が定義されていればComparableモジュールで定義してあるメソッドを使用することが出来ます。

このモジュールをincludeしていることで<, >, =などのメソッドを使用することが出来ている。

最後に

モジュールについては他の方のポートフォリオやネットの記事で見かけることはありましたが、モジュール自体がどういった役割を持っているのか知らなかったのでこのモジュールの部分の学習がとても参考になります。
まだモジュールの内容が残っているので引き続き学習していきたいと思います。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
0
Help us understand the problem. What are the problem?