2014-02-18 4 views
0

왜 내 테스트가 실패했는지 알게 된 후에 뭔가를 삽입하지 않을 때 작은 따옴표 만 사용하는 아이디어를 유지하고 싶습니다. 그러나이 경우에는 테스트가 실패합니다. 모든 질문을 이중 따옴표로 변환하지 않고 문자열 '1\n,2,3'을 피할 수있는 방법이 있습니까?Ruby : 이스케이프 문자열 문자

사양 :

describe '#add' do 
    before(:each) do 
    @calc = StringCalculator.new 
    end 

    context 'when given a delimiter' do 
    it 'should support newlines' do 
     expect(@calc.add('1\n2,3')).to eq(6) 
    end 
    end 
end 

Calc.rb :

class StringCalculator 
    attr_reader :numbers 

    def initialize(numbers = '') 
    @numbers = numbers 
    end 

    def add(expression) 
    @numbers.concat(expression) 
    @numbers.gsub!(/\n/, ',') 
    @numbers.empty? ? 0 : result 
    end 

    def result 
    @numbers.split(',').map(&:to_i).reduce(:+) 
    end 
end 
+1

특수 문자가 필요한 경우 왜 ar입니까? 처음에 작은 따옴표를 사용합니까? 이것은 큰 따옴표를위한 것입니다. 맞습니까? 당신이 발견했듯이, 단지 보간법을위한 것이 아닙니다. – Ajedi32

+0

나는 이스케이프 된 캐릭터를 원하지 않는다. @ Ajedi32 나는 방금 어떤 방법이있을 것이라고 생각했다. 내가 의미했던 바는 대부분의 루비스트는 값을 보간하지 않을 때 작은 따옴표를 사용하는 것을 선호한다. – theGrayFox

+0

글쎄, [Ruby 스타일 가이드] (https://github.com/bbsosov/ruby-style-guide)에서 이렇게 말합니다 : "문자열 보간이나 \ t','\ n','''등. " 요점은 : 일관성을 위해 필요하지 않을 때는 큰 따옴표로 묶은 문자열을 사용하지 마십시오. – Ajedi32

답변

0

글쎄, 당신은 정말, 정말이 원하는 경우에 다음과 같이

내 코드입니다 doubl 사용을 피하기 위해 전자 따옴표 당신은 작은 따옴표 사이에 리터럴 개행 문자를 삽입 할 수 : 정말로 추한 내 의견에

expect(@calc.add('1 
2,3')).to eq(6) 

합니다. 큰 따옴표에 고유 한 기능 (I.E. 이스케이프 된 줄 바꿈 문자)을 사용하려면 큰 따옴표를 사용하지 않는 것이 어떻습니까? 그것은 그들이 아무것도 두려워 할 것이 없습니다, 악마 또는 아무것도 것처럼하지 : 또한

expect(@calc.add("1\n2,3")).to eq(6) 

당신이 원하지 않는 경우, 당신은 "큰 따옴표를 사용하여 모든 테스트를 변환 할"필요가 없습니다 . 개인적으로, 나의 어림셈은 할 수있을 때는 작은 따옴표를 사용하고 필요할 때마다 큰 따옴표를 사용하는 것입니다. 작업에 적합한 도구를 사용하십시오.


이 여기에 나와 함께 동의하는듯한 the Ruby style guide on GitHub에서 a quote입니다 :

  • 당신이 문자열 보간 또는 \t, \n, ' 등의 특수 기호를 필요로하지 않는 단일 인용 문자열을 선호,
+1

이것은 많은 도움을주었습니다. 이것이 정말 미적인 일이라는 것을 압니다. 나는 모든 작은 세부 사항에 관해 꽤 세심하다. 감사! – theGrayFox

관련 문제