首页 文章

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

提问于
浏览
2

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

这打印:

h == h : false
e == h : false
l == h : false
l == h : false
o == h : false

1 回答

  • 7

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

    执行 index_of?(str, 'h') 将打印:

    h == h : true
    e == h : false
    l == h : false
    l == h : false
    o == h : false
    

相关问题