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

时间:2017-10-31 19:14:39

标签: 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")

打印:

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

1 个答案:

答案 0 :(得分:7)

因为obj[num]返回Char,而不是字符串。

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

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