Ruby结束if block

时间:2016-09-12 10:55:44

标签: ruby

我是Ruby的初学者。我试图打印如果一个对象是一个数组或一个整数,但我得到一个语法错误,我无法想象如何解决它。

D:\Ruby>ruby -c Learning-Ruby\loops_stuff.rb
Learning-Ruby/loops_stuff.rb:9: syntax error, unexpected keyword_else, expecting keyword_end
Learning-Ruby/loops_stuff.rb:11: syntax error, unexpected end-of-input, expecting keyword_end

这是我的代码

obj = ["a", 1, 3.6]

if object.is_a(obj)
    puts "Is array: "
    obj.each do |index|
        puts index
elseif object.is_i(obj)
    puts "Is integer: {#obj}"
else
    puts "Is neither array or integer"
end

3 个答案:

答案 0 :(得分:2)

关键字是elsif(中间没有e)

obj = ["a", 1, 3.6]

if obj.is_a?(Array)
  puts "Is array: "
  obj.each do |index|
    puts index
  end
elsif obj.is_a?(Integer)
  puts "Is integer: #{obj}"
else
  puts "Is neither array or integer"
end

在我的第一次红宝石会议中也发现了这一点

答案 1 :(得分:2)

另外,您可以使用case..when语句(看起来更优雅):

case obj
when Integer
  #some actions
when Array 
  #some actions
else
  #some actions
end

答案 2 :(得分:0)

根据您打印的字符串,这可能是您想要编码的内容。

obj = ["a", 1, 3.6]

if obj.is_a?(Array)
    puts "Is array: "
    obj.each do |index|
        puts index
    end
elsif obj.is_a?(Integer)
    puts "Is integer: {#obj}"
else
    puts "Is neither array or integer"
end

输出结果为:

Is array: 
a
1
3.6