LoginSignup
0
0

More than 5 years have passed since last update.

Ruby メソッド

Posted at

動作環境はMacを使用しています。

メソッド

複数の処理を1つにまとめて扱いやすくしたもの
クラス内に定義される
≒クラス内に定義する関数

構文

def メソッド名(引数1、引数2...)
実行したい処理
end

引数がない場合省略可。
引数は、メソッドに渡すもの。


実践

"Hello, World"と出力するプログラムを実装
メソッド名はhello_world

method_hello.rb

def hello_world
  puts "Hello, World!"
end

hello_world

出力結果

$ ruby method_hello.rb
Hello, World!

引数を使用して、任意の数字を計算するプログラム

method_add.rb
def add(x, y)
  x + y
end

puts add(10,1)
#10+1の計算結果が出力される
#メソッド内にputsを定義しない理由は文字列ではないから

出力結果


$ ruby method_add.rb
11

戻り値
メソッドからメソッドの呼び出し元に戻す値のこと

他のプログラミング言語で戻り値を明示的に表す場合があるがrubyの場合は不要

method_add.rb
def add(x, y)
  return x + y
end

puts add(10,1)
$ ruby method_add.rb
11
#エラーにはならない

メソッドの命名規則

メソッド名は小文字

method_name.rb
def hello
  puts "Hello"
end

hello

出力結果

$ ruby method_name.rb
Hello

2語以上のメソッド名になる場合はスネークケース(アンダースコア)でつなぐ
※アンダースコアで始まるメソッド名はエラーにはならないが意図がない限り避ける

method_name.rb
def hello_world
  puts "Hello"
end

hello_world

出力結果

$ ruby method_name.rb
Hello

メソッド名に数字は使用可能。ただし、使用しない方が良い
製作者しかわからないマジックナンバーになるため

method_name.rb
def hello1
  puts "Hello"
end

hello1

#行頭に数字を持ってくるとエラーになる
def 1hello
  puts "Hello"
end

1hello

出力結果

$ ruby method_name.rb
Hello

$ ruby method_name.rb
method_name.rb:1: syntax error, unexpected tINTEGER
def 1hello
     ^

実践

引数にcatが渡されたら"meow"
引数にdogが渡されたら"bowwow"
それ以外なら"???と出力されるメソッド

animal_cry.rb

def cry(animal)
  if animal == "cat"
    puts "meow"
  elsif animal == "dog"
    puts "bowwow"
  else
    puts "???"
  end
end

puts cry(引数) #戻り値の出力

出力結果


$ ruby animal_cry.rb
meow #cat
$ ruby animal_cry.rb
bowwow #dog
$ ruby animal_cry.rb
??? #それ以外

FizzBuzzメソッド

3で割り切れる時Fizz
5で割り切れる時Buzz
15で割り切れる時FizzBuzz
それ以外は数値を文字列にして返す

fizz_buzz.rb
def fizz_buzz(n)
  if n % 15 == 0
    "FizzBuzz"
  elsif n % 3 == 0
    "Fizz"
  elsif n % 5 == 0
    "Buzz"
  else
    n.to_s
  end
end

puts fizz_buzz(1)
puts fizz_buzz(2)
puts fizz_buzz(3)
puts fizz_buzz(4)
puts fizz_buzz(5)
puts fizz_buzz(6)
puts fizz_buzz(7)
puts fizz_buzz(8)
puts fizz_buzz(9)
puts fizz_buzz(10)
puts fizz_buzz(11)
puts fizz_buzz(12)
puts fizz_buzz(13)
puts fizz_buzz(14)
puts fizz_buzz(15)

出力結果

1 
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz

ポイントは3で割る処理の一番最初に持ってきてしまうと、
15で割る時にFizzが返ってしまうので、15で割る処理を一番最初に持ってくること。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0