概要
Ruby課題を解いていたときに、syntax error
が出て解決するのに数時間かかった。
結論から言うと、全角スペースが原因だった話。
##書いたコード
さて、どこが原因でしょうか?!
(エディタではなく、Qiitaで見ると分かりやすいですね。)
# 旅行プラン
plans = [
{ place: "沖縄", price: 10000 },
{ place: "北海道", price: 20000 },
{ place: "九州", price: 15000 }
]
disp_plans(plans) #プランの表示
chosen_plan = choose_plan(plans) #プランの番号を選択
person_num = num_of_people(chosen_plan) #予約人数を入力
calculate_price(chosen_plan, person_num) #合計料金を表示
エラー文
trip_main.rb:11: syntax error, unexpected local variable or method, expecting end-of-input
...en_plan = choose_plan(plans) #プランの番号を選択
はい、よく出るエラー文ですね。
syntax error, unexpected local variable or method, expecting end-of-input
これに悩まされた人も多いでしょう。
11行目で、構文エラーが出ており、予期していないローカル変数やメソッドがありますよ。
endをください、と言ってます。
ただ、ここでエラー内容を見るのを止めないでください。むしろその次が重要です。
私は、chosen_plan
のスペルミスか?
choose_plan(plans)
のメソッド処理内容があかんのか?
必死になって見てましたが、
...en_plan = choose_plan(plans) #プランの番号を選択
はい。choose_plan(plans)
とコメントアウトの間に、全角スペースがありますね。
これが原因だったわけです。
同じ過ちをしないために
全角スペースが知らぬ間に紛れないように、可視化する方法があります。
VSCode
を使用している人は、拡張機能の検索画面から「zenkaku」
を検索して、インストールしましょう。
詳しくはこちらを参考にしてください。
全角スペースは、灰色の四角のハイライトで表示されるようになるので、これでOK!
まとめ
後々、冷静になってエラー内容確認したら全角のところに_
(アンダーバー)が書かれてた。
エラー文から逃げずに、しっかり向き合いましょう。
参考記事
VSCodeで半角スペースと全角スペースを可視化する方法【インストールしたら必ず設定】
【Tips】Rubyソースコード内の全角スペースについて