

Ruby初心者です

<http://ascii.jp/elem/000/001/255/1255878/>  
のサイトを参考に  
下記のコードを作成しました。  
ーーーーーーーーーーーーーーーーーーーーー

[code]

    require "minruby"
    def evaluate(tree)
      case tree[0]
      when "lit"
        tree[1]
      when "+"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left + right
      when "-"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left - right
      when "*"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left * right
      else
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left / right
      end
    end
    str = gets
    tree = minruby_parse(str)
    answer = evaluate(tree)
    
[/code]

ーーーーーーーーーーーーーーーーーーーー  
実行結果としては

[code]

    ex013.rb:3:in `evaluate': undefined method `  case' for main:Object (NoMethodError)
    
[/code]

ということでした。

３行目にある、case文がメソッドとして見つからないという意味だと思うのですが、解決することができません。

ご教授いただけると幸いです。


CC BY-SA 3.0
2018-02-16T11:59:08.733
41786
2018-02-19T06:51:42.083
2018-02-19T06:51:42.083
19110
25182
question
ruby
undefined methodのエラーの直し方がわかりません。


インデントに使われている空白が普通の空白ではなく、EN SPACE と呼ばれる別種の空白になっているようです。  
以下のように普通の空白に置き換えると解決します。

[code]

    require "minruby"
    def evaluate(tree)
      case tree[0]
      when "lit"
        tree[1]
      when "+"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left + right
      when "-"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left - right
      when "*"
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left * right
      else
        left  = evaluate(tree[1])
        right = evaluate(tree[2])
        left / right
      end
    end
    str = gets
    tree = minruby_parse(str)
    answer = evaluate(tree)
    
[/code]


CC BY-SA 3.0
2018-02-16T12:54:04.940
41787
2018-02-17T04:06:20.273
2018-02-17T04:06:20.273
5288
5288
41786
answer

[code]

    ex013.rb:3:in `evaluate': undefined method `  case' for main:Object (NoMethodError)
    
[/code]

をよく見てみると case の囲みの所に不自然な空白がありますね。  
普通は `'単語'` のように囲まれるはずです。 `' 単語'` となっているので、ここに全角スペースがあるのかと思います。

全角スペースは見た目ではわからないため、エディターで半角スペースと見分けがつくような設定をお勧めします。


CC BY-SA 3.0
2018-02-17T01:25:17.440
41794
2018-02-17T01:25:17.440
7208
41786
answer