2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【超初心者ミス】ハッシュを設定してる際に『no implicit conversion of Symbol into Integer』がでてしまった

Last updated at Posted at 2024-11-01

状況

hashを設定している際に上記のエラーが出てしまった。
no implicit conversion of Symbol into Integer を調べても原因がでてくるが解決法がピンとこない(試したが上手く行かない)

解決策

returnで返り値設定しているか確認
下記の場合はhash値を指定しているメソッドの最後に hash をつけたら解決した

def edit_hash
  hash = {}

  #メソッド内容

  hash  # ここの宣言が必要 "return hash"を省略した記述
end

何故だったのか

Rubyの返り値には最後に評価された値が返るという暗黙のルールがある。
そのため返り値を"return"で指定しているのだが、上のコードのように省略して書かれているので初学者は忘れやすい。(忘れた)

# retrunを設定していない
def edit_hash
  hash = {}
  hash[:name] = '鈴木'
  hash[:age] = 24
  hash[:gender] = 'female'
end

# result
female
# retrun(返り値)を設定
def edit_hash
  hash = {}
  hash[:name] = '鈴木'
  hash[:age] = 24
  hash[:gender] = 'female'
  hash 
end

# result
{:name=>"鈴木", :age=>24, :gender=>"female"}

反省

普通に初歩過ぎてビビった
最初にhashという変数を設定している時点で気づくべきだし、変数の中身確認すれば一発なのに…
超恥ずかしいけど今後見返すときの為、自戒の念をこめて全国公開

2
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?