2013-08-02 5 views
2

왜 상수 문자열의 길이를 인쇄 할 수 없습니까? 이 내 코드입니다 :string.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

이것은 관용적 인 루비에서 문자열을 보간하는 방법에 대한 좋은 교훈 일 수 있습니다. 사람들이 부분 문자열을 추가하여 문자열을 만들 것으로 예상되는 많은 언어가있을 것이라고 확신하지만 루비는 확실히 그 중 하나가 아닙니다. –

답변

2

를 사용하여 보간 "#{}" 루비 : 대안으로

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

또는. 그것은 당신의 발현을 평가하여 문자열을 출력합니다 :

#!/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 필요하지 않습니다, 이름이 이미 있기 때문에 String 객체입니다. 그냥 Name이면 충분합니다.

는 문자열로 Fixnum이라는 ( length를) 변환 :

puts "My name has #{Name.length} characters." 
관련 문제