我正在查看一些用 Ruby 1.8 编写的用于 RubyQuiz 的代码,当我在 1.9.2 中运行它时会抛出错误。这种方法
def encrypt(s)
return process(s) {|c, key| 64 + mod(c + key - 128)}
end
给我以下错误
in `+': String can't be coerced into Fixnum (TypeError)
这是我的代码:
def mod(c)
return c - 26 if c > 26
return c + 26 if c < 1
return c
end
def process(s, &combiner)
s = sanitize(s)
out = ""
s.each_byte { |c|
if c >= 'A'.ord and c <= 'Z'.ord
key = @keystream.get
res = combiner.call(c, key[0])
out << res.chr
else
out << c.chr
end
}
return out
end