5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【注意!】Rubyの全角スペースが原因のエラー

Last updated at Posted at 2021-03-17

概要

Ruby課題を解いていたときに、syntax errorが出て解決するのに数時間かかった。
結論から言うと、全角スペースが原因だった話。

##書いたコード

さて、どこが原因でしょうか?!
(エディタではなく、Qiitaで見ると分かりやすいですね。)

trip_main.rb
# 旅行プラン
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) #合計料金を表示

エラー文

error.rb
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)のメソッド処理内容があかんのか?
必死になって見てましたが、

error.rb
...en_plan = choose_plan(plans) #プランの番号を選択

はい。choose_plan(plans)とコメントアウトの間に、全角スペースがありますね。
これが原因だったわけです。

同じ過ちをしないために

全角スペースが知らぬ間に紛れないように、可視化する方法があります。
VSCodeを使用している人は、拡張機能の検索画面から「zenkaku」を検索して、インストールしましょう。
詳しくはこちらを参考にしてください。

全角スペースは、灰色の四角のハイライトで表示されるようになるので、これでOK!

まとめ

後々、冷静になってエラー内容確認したら全角のところに_(アンダーバー)が書かれてた。
エラー文から逃げずに、しっかり向き合いましょう。

参考記事

VSCodeで半角スペースと全角スペースを可視化する方法【インストールしたら必ず設定】
【Tips】Rubyソースコード内の全角スペースについて

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?