나는 Ruby를 처음 접했고 ""
vs 를 사용해야 할 특정 시간이 있는지 이해하려고합니다 ''
.
입력하기가 쉽기 때문에 대부분 작은 따옴표를 사용하고 있지만 확실하지는 않습니다.
예 : get 'user/new'
vsget "user/new"
나는 Ruby를 처음 접했고 ""
vs 를 사용해야 할 특정 시간이 있는지 이해하려고합니다 ''
.
입력하기가 쉽기 때문에 대부분 작은 따옴표를 사용하고 있지만 확실하지는 않습니다.
예 : get 'user/new'
vsget "user/new"
답변:
보간을 제외하고 또 다른 차이점은 '탈출 시퀀스'가 작은 따옴표로 작동하지 않는다는 것입니다
puts 'a\nb' # just print a\nb
puts "a\nb" # print a, then b at newline
'don\'t'
.
puts '\\'
. 단일 슬래시 만 인쇄합니다. 여기를 참조하십시오 stackoverflow.com/questions/25499046/…
질문에 대답하려면 ""
문자열 보간을 수행 할 때 사용해야 합니다.
a = 2
puts "#{a}"
그렇지 않으면 간단한 따옴표를 사용하십시오.
또한 성능 측면에서 차이가 있는지 궁금하다면 StackOverflow에 대한 훌륭한 질문이 있습니다.
그리고 당신이 RoR을 처음 접한다면, 언어의 기본을 배우기 위해 알맞은 루비 책을 집어들 것을 권합니다. 그것은 당신이하고있는 일을 이해하는 데 도움이 될 것입니다 (그리고 Rails가 마술이라고 생각하지 못하게합니다). 저는 개인적으로 The Welled grounded Rubyist를 추천 합니다.
루비에서는 ''
작은 따옴표와 큰 따옴표 사이 ""
에 문자열로 평가할 내용이 다릅니다 .
처음에, 나는에 그것을 명확히하고자하는 문자열의 문자 형태 사이에 어떤 단일 또는 이중 루비 String 클래스의 인스턴스 인 문자열 객체로 평가 따옴표 가져옵니다.
따라서, 'stackoverflow'
그리고 "stackoverflow"
모두 String 클래스의 인스턴스를 평가합니다 전혀 차이 .
두 문자 그대로의 문자열 형식 (단일 또는 큰 따옴표)의 근본적인 차이점은 큰 따옴표는 이스케이프 시퀀스를 허용하지만 작은 따옴표는 그렇지 않습니다!
리터럴 작은 따옴표에 의해 생성 된 문자열은 지원하지 않습니다 문자열 interpollation을 하고 이스케이프 시퀀스를하지 않습니다.
깔끔한 예는 다음과 같습니다.
"\n" # will be interpreted as a new line
이므로
'\n' # will display the actual escape sequence to the user
작은 따옴표로 보간하는 것은 전혀 작동하지 않습니다.
'#{Time.now}'
=> "\#{Time.now}" # which is not what you want..
대부분의 Ruby Linters는 문자열에 작은 따옴표 리터럴을 사용 하고 보간 / 이스케이프 시퀀스의 경우 큰 따옴표 리터럴을 사용하도록 제안 합니다 .
작은 따옴표로 묶인 문자열은 ASCII 이스케이프 코드 (\ n, \ t 등)를 처리하지 않으며 큰 따옴표로 묶인 문자열은 문자열 보간을 수행하지 않습니다.
이스케이프 코드 예제 :
2.4.0 :004 > puts 'Hello \n World'
Hello \n World
2.4.0 :005 > puts "Hello \n World"
Hello
World
보간 예 :
2.4.0 :008 > age=27
=> 27
2.4.0 :009 > puts 'Age: #{age}'
Age: #{age}
2.4.0 :009 > puts "Age: #{age}"
Age: 27
이 특정 경우에는 작성 방법에 차이가 없습니다. 그것들은 동등합니다. 또한 루비 가이드 / 튜토리얼을 더 읽어보고 싶을 수도 있습니다. :)