Rubyのメソッド

2020-08-26 hit count image

Rubyでメソッド(関数)を使う方法について説明します。

概要

メソッド(Method)、他の言葉で関数はプログラムで処理する内容を先に定義して、必要な時読んで実行するために使います。今回のブログポストではRubyのメソッドを使う方法について説明します。

定義する

Rubyでは下記のようにメソッドを定義します。

def add(a, b)
  x = a + b
  return x
end

puts add(1, 2)

# 3

return

Rubyでは最後のreturnを省略することができます。

def add(a, b)
  x = a + b
end

puts add(1, 2)

# 3

最後のreturnを省略する場合、最後に書いた値がreturnされます。

括弧

関数のパラメーターがない場合は下記のように括弧を省略することができます。

def print
  puts 'Hello'
end

print

# Hello

パラメーター

パラメーターのDefault

下記のようにパラメーターのDefaultを設定することができます。

def add(a, b = 2)
  x = a + b
end

puts add(1)

# 3

ブロックパラメーター

パラメーターの前に&を使うとパラメーターをブロック(処理のグループ)を渡すことができます。

def temp(&a)
  a.call
end

temp {
  puts "Hello"
  puts "World"
}

# Hello
# World

パラメーターで渡して貰ったブロックを実行するためにはcall関数を使う必要があります。

def temp(&a)
  a.call
end

temp do
  puts 'Hello'
  puts 'World'
end

# Hello
# World

可変長パラメーター

長さが変化するパラメーターは*を使って渡すことができます。

def temp(num, *n)
  puts num
  puts n
end

temp(1, 2, 3)
puts '------------'
temp(1, 2, 3, 4, 5)

# 1
# 2
# 3
# ------------
# 1
# 2
# 3
# 4
# 5

undef 와 defined

undef

Rubyではundefを使って定義したメソッドを消すことができます。

def temp
  puts 'Hello'
end

temp
undef temp
temp

# Hello
# Traceback (most recent call last):
# temp.rb:9:in `<main>': undefined local variable or method `temp' for main:Object (NameError)

defined

上のようにundefでメソッドを消すことができますし、definedを使ってメソッドが存在するかどうかを確認することもできます。를 사용하면 메소드가 존재하는지 여부를 확인할 수 있습니다.

def temp
  puts 'Hello'
end

puts defined? temp
undef temp
puts defined? temp

# method
#

definedを使う場合、定義された式の種類を意味する文字列が表示されます。

# super
# method
# yield
# self
# nil
# true
# false
# assignment
# local-variable
# local-variable(in-block)
# global-bariable
# instance-variable
# constant
# class variable
# $&
# $`
# $1
# $2
# expression

完了

これでRubyでメソッドを定義して使う方法について見てみました。また、Rubyのユニークな文法も確認しました。今から皆さんもRubyのメソッドを使って必要な処理を定義して使ってみてください。

私のブログが役に立ちましたか?下にコメントを残してください。それは私にとって大きな大きな力になります!

Posts