Rubyのaliasとalias_methodでメソッドに別名を付ける方法【初心者向け】
初心者向けにRubyでaliasとalias_methodを使う方法について解説しています。これらは既存のメソッドに別名をつけるものです。それぞれの違いも含めて学習していきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
Rubyのaliasとalias_methodの使い方と2つの違いについて説明します。
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。
今回は、Rubyに関する内容だね!
どういう内容でしょうか?
aliasとalias_methodの使い方について詳しく説明していくね!
お願いします!
aliasとalias_methodの違いとは
どちらも既存のメソッドに対して別名をつけることができるものですが、下記の点が違いがあります。
alias | alias_method | |
グローバル変数に別名をつける | 可能 | 不可能 |
メソッド名に文字列が使える | 不可能 | 可能 |
キーワードである | Yes | No |
メソッドである | No | Yes |
オーバーライドできる | 不可能 | 可能 |
これらの違いを考慮して、それぞれ適した使い分けをする必要があります。
alias_methodメソッドで別名を付ける場合、元のメソッドに対してremove_methodやundef_methodを適用することで元にメソッドを呼べないようにすることもできます。
aliasとalias_methodの書き方
aliasの書き方
alias 新メソッド名 旧メソッド名 alias 新グローバル変数名 旧グローバル変数名
alias_methodの書き方
alias_method 新メソッド名, 旧メソッド名
実際に書いてみよう
ソースコード
def first_method p "this is first_method" end alias second_method first_method second_method # => "this is first_method" # second_methodはfirst_methodのaliasになっているため、first_methodが実行されます Class AliasMethodTest def first_method p "this is first_method" end alias_method :second_method, :first_method end AliasMethodTest.new.second_method # => "this is first_method" # second_methodはfirst_methodのaliasになっているため、first_methodが実行されます
以下のバージョンでサンプルコードを動かしています。
$ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
回答してくれたメンター
阿部祐也 職種: エンジニア普段の業務: リモートワークで勤務しながら、自社・受託サービスの開発に従事 Ruby on Rails, Node.js, TypeScript, React, AWSなどを利用したWeb系のシステムの開発を主に担当開発実績: ソーシャルゲーム、ツール系アプリ、広告システム、ヘルスケア系アプリのプロジェクトに参加しており、PHP, Ruby on Rails, Objective-C, Swiftでの開発を担当その他: リモートワークを活かして毎日愛猫と一緒にコードを書いています。 |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。