Ruby未定义方法`+';零级:零级

Ruby未定义方法`+';零级:零级,ruby,null,Ruby,Null,我完全是ruby的初学者,但我无法摆脱这个问题 当我运行代码时,我得到了这些信息,所有这些信息都很好地工作到最后: 输入文本:直到 输入潜台词:ll 文字:这一切都很好,直到潜文字:ll 输出: 4. 十五 nil:NilClass的未定义方法+' (回复):18:ininitialize' puts "\nINPUT TEXT:" @text = gets.chomp puts "\nINPUT SUBTEXT:" @subtext = gets.chomp

我完全是ruby的初学者,但我无法摆脱这个问题 当我运行代码时,我得到了这些信息,所有这些信息都很好地工作到最后:

输入文本:直到

输入潜台词:ll

文字:这一切都很好,直到潜文字:ll

输出: 4. 十五

nil:NilClass的未定义方法
+'
(回复):18:in
initialize'

   puts "\nINPUT TEXT:"
    @text =  gets.chomp

puts "\nINPUT SUBTEXT:" 
    @subtext = gets.chomp

    puts "\nTEXT: " + @text
    puts "SUBTEXT: " + @subtext
    puts "\n"
    i = @text.index (@subtext)

    puts "OUTPUT:"

    while i != -1
            puts  i.to_s + ' '
            i = @text.index @subtext, i+1
    end

在Ruby中,当未找到子字符串时,
String#index
不会返回-1;它返回
nil
。在i!=-1到
,而我
。(这是因为,与其他一些语言不同,Ruby认为值0为true;只有
false
nil
为false。)

如果子字符串不存在,Index返回nil。所以这应该解决这个问题

@text =  gets.chomp

puts "\nINPUT SUBTEXT:"
@subtext = gets.chomp

puts "\nTEXT: " + @text
puts "SUBTEXT: " + @subtext
puts "\n"
i = @text.index (@subtext)

puts "OUTPUT:"
while i
  puts  i.to_s + ' '
  i = @text.index @subtext, i+1
end