初心者からのエンジニア日記

2020年6月末~TECH::CAMPにて本格的にプログラミング学習を開始。 販売職/店長を経て、駆け出しエンジニアの道へ一歩踏み出しました! 様々なアウトプットをしていきたいと思います! HTML/CSS,Ruby,Ruby on Rails,Java Script,jQuery,Haml/Scss,GitHub...

【Ruby】search,each_with_index

本日、学習中のRubyドリル問題で引っかかった点をアウトプットします!

 

 

問題.以下の配列から数を探して何番目に含まれているか

   結果を返すメソッドをsearchとeach_with_indexを用いて作成しなさい

input = [3, 5, 9, 12, 15, 21, 29, 35, 42]

 

↓答えはこちら↓

def search(target_num, input)

  input.each_with_index do |num, index|
    if num == target_num
      puts "#{ index + 1 }番目にあります"
      return
    end
  end
  puts "その数は含まれません"
end
 input = [3, 5, 9, 12, 15, 21, 29, 35, 42]
search(11, input)

 

この時私は「if文なのでelseを使おう!」と思ってしまったわけなのですが、

ここでelseを用いてしまうとうまくいきません

 

 

解説.

答えは単純なのですが、elseを用いてしまうと

if num == target_num

の部分でfalseとなった時点で「return false」をしてしまうためです。

 

問題の通りに出力したい場合

target_num(目的の数)が見つかった時点でtrueを返して終了

もしくは

目的の数が見つからなければeachループが終わった時点でfalseを返す

というメソッドを作成しなければいけないのです・・・!

 

 

またひとつ、賢くなれた朝でした・・・