为什么Crystal会将此评估为false?

Jos*_* M. 2 crystal-lang

作为练习,我想创建一个函数,返回字符串中字符的第一个索引.该函数有两个参数,字符串和字符来获取索引.我遍历字符串以匹配提供的字符.我正在打印每次迭代的评估以进行测试,但即使它们应该相等,它也会返回false.

def index_of?(obj, el)
  unless obj.size == 0
    num = 0
    while num < obj.size
      puts "#{obj[num]} == #{el} : #{obj[num] == el}"
      num += 1
    end
  end
end

str = "hello"
index_of?(str, "h")
Run Code Online (Sandbox Code Playgroud)

这打印:

h == h : false
e == h : false
l == h : false
l == h : false
o == h : false
Run Code Online (Sandbox Code Playgroud)

Vit*_*upt 7

因为obj[num]返回Char,而不是String.

index_of?(str, 'h')会打印:

h == h : true
e == h : false
l == h : false
l == h : false
o == h : false
Run Code Online (Sandbox Code Playgroud)