1
0

エラー:SyntaxError circular argument referenceの解決方法

Posted at

【開発環境】

Ruby 2.7.5
Rails 6.1.7.6

どういう時にエラーが発生したか

秀和システムの「Ruby on Rails 6 超入門」で学んでいます。
進めていく中、「2-6 メッセージボードを作ろう」で「circular argument reference」というエラーが発生。

スクリーンショット 2023-10-08 19.23.48.png

エラーの原因

以下のサイトによると、ruby2.2.0以降から、メソッドの引数のデフォルト値に同じ名前の変数を使おうとするとcircular argument referenceというエラーが発生するようです。
https://qiita.com/a_ishidaaa/items/47a8459aa5fe5512871a

エラーの解決方法

こちらは、キーワード引数に括弧()を付ける事でエラーを解消しました。

修正前 ※以下のコードでエラー発生

def initialize(msg:mag, name:name, mail:mail)
  self.name = name
  self.mail = mail
  self.msg = msg
end

修正後 ※以下のコード修正後、エラー解消

def initialize(msg:mag(), name:name(), mail:mail())
  self.name = name
  self.mail = mail
  self.msg = msg
end

【まとめ】 

2.2.0以降はなんでこのような仕様になってしまったのか疑問がありますが、とりあえずはエラー解決できてよかったです。
何かご指摘がありましたらお願いします!ここまで読んで下さり、ありがとうございました!

1
0
2

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