2

为什么我不能打印常量字符串的长度?这是我的代码:

#!/usr/bin/ruby
Name = "Edgar Wallace"
name = "123456"

puts "Hello, my name is " + Name
puts "My name has " + Name.to_s.length + " characters."

我已经阅读了“如何确定 Ruby 中 Fixnum 的长度? ”,但不幸的是它对我没有帮助。

尝试后,抛出此错误:

./hello.rb:7:in `+': can't convert Fixnum into String (TypeError)
          from ./hello.rb:7:in `<main>'
4

2 回答 2

12

您不能使用 Fixnum 连接到字符串:

>> "A" + 1
TypeError: can't convert Fixnum into String
    from (irb):1:in `+'
    from (irb):1
    from /usr/bin/irb:12:in `<main>'
>> "A" + 1.to_s
=> "A1"

而且,您不需要Name.to_s,因为 Name 已经是一个 String 对象。就够Name了。

将 Fixnum ( length) 转换为字符串:

puts "My name has " + Name.length.to_s + " characters."

或者,作为替代方案:

puts "My name has #{Name.length} characters."
于 2013-08-02T09:24:36.543 回答
2

"#{}"在 Ruby 中使用插值。它将评估您的表达式并打印您的字符串:

#!/usr/bin/ruby
Name = "Edgar Wallace"
name = "123456"

puts "My name has #{Name.length} characters."

注意:如果您使用带单引号 (') 的字符串,则不能使用插值。与双引号一起使用。

于 2013-08-02T09:41:19.747 回答