-2

以下はコーディング例です。

  d(val)
   if !(val.is_a? Fixnum)
      "#{val} is not an integer"
   elsif val % 2 == 0    
      "#{val} is even"
   else             
      "#{val} is odd"
   end
end

私が理解していないのは、なぜ 2 つの 'end's があるのか​​ということです。if ステートメントを完成させるには、「終わり」が 1 つだけあるべきだと思います。説明してください。

4

2 に答える 2

1

そこに欠けているdefか:

def d(val)
   if !(val.is_a? Fixnum)
      "#{val} is not an integer"
   elsif val % 2 == 0    
      "#{val} is even"
   else             
      "#{val} is odd"
   end
end

または無効な Ruby コードです。

最初のケースでは、2 番目のケースでendはメソッド定義が閉じられ、最初のケースではifステートメントが閉じられます。

于 2013-06-02T02:12:47.723 に答える
0

終わりは 1 つだけであるべきです。

最初の行はメソッドの定義のように見えます

def even_or_odd(val)
  if ...
    ...
  end
end

2 番目の端は、定義を閉じます。

于 2013-06-02T02:13:27.017 に答える