2013-08-02 62 views
2

爲什麼我不能打印常量字符串的長度? 這是我的代碼:打印字符串時出錯.length

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

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

我已經讀完了「How do I determine the length of a Fixnum in Ruby?」,但遺憾的是它並沒有幫助我。

嘗試後,將引發此錯誤:

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

Ruby中的變量應該是小寫,即'name'而不是'Name'。 – Stefan

+0

這可能是一個關於如何在慣用的ruby中插入字符串的好教訓。我確定有很多語言,人們希望通過添加子字符串來構建字符串,但是ruby絕對不是其中的一種。 –

回答

2

使用插值"#{}"在Ruby中。它會評估你的表現並打印字符串:

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

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

注:如果您使用的是單引號(')的字符串不能使用插值。使用雙引號。

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就夠了。

轉換的Fixnum對象(length)爲String:

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

或者,作爲一種替代方案:

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