2011-11-12 1 views
2

나는 루비 화두를 통해 루비를 배우는 :유연한 따옴표는 문자열에 추가 문자를 추가합니까? 나는이 두 가지 기능을 직면했을 때

def test_flexible_quotes_can_handle_multiple_lines 
    *long_string = %{ 
    It was the best of times, 
    It was the worst of times. 
    }* 
    assert_equal *54*, long_string.size 
end 

def test_here_documents_can_also_handle_multiple_lines 
    *long_string = <<EOS 
    It was the best of times, 
    It was the worst of times. 
    EOS* 
    assert_equal *53*, long_string.size 
end 

문제는 내가이 여분의 캐릭터가 유연한 따옴표를 사용하는 경우 어디에서 오는 이해할 수없는 것입니다. Ruby koans는 두 답이 모두 옳다고 말합니다.

답변

5

나는 %{ 이후에 개행 문자라고 말하고 싶습니다.

>> test = %{ 
">> foo 
">> } 
=> "\nfoo\n" 
>> test.size 
=> 5 
>> test = %{foo 
">> } 
=> "foo\n" 
>> test.size 
=> 4 
>> test = <<EOS 
">> foo 
">> EOS 
=> "foo\n" 
>> test.size 
=> 4 
4

방금이 문제를 해결했습니다. 콘솔에서 irb를 실행하고 이들 중 일부를 테스트해볼 수도 있습니다.
예 :이 정말 유용 찾을

2.0.0-p353 :007 > exit 
$ irb 

2.0.0-p353 :001 > long_string = <<EOS 
2.0.0-p353 :002"> It was the best of times, 
2.0.0-p353 :003"> It was the worst of times. 
2.0.0-p353 :004"> EOS 
=> "It was the best of times,\nIt was the worst of times.\n" 
2.0.0-p353 :005 > long_string.length 
=> 53 
2.0.0-p353 :006 > long_string[0,1] 
=> "I" 

을 :

$ irb 
2.0.0-p353 :001 > long_string = %{ 
2.0.0-p353 :002"> It was the best of times, 
2.0.0-p353 :003"> It was the worst of times. 
2.0.0-p353 :004"> } 
=> "\nIt was the best of times,\nIt was the worst of times.\n" 
2.0.0-p353 :005 > long_string.length 
=> 54 
2.0.0-p353 :006 > long_string[0,1] 
=> "\n" 

그것은 long_string의 이전 할당을 덮어 쓸 것입니다하지만 새로운 세션을 생성하는 데 도움이 경우 그냥 시각화 내 코드로 무슨 일이 일어나는지를 배우기위한 도구.