2015-01-20 1 views
1

루비에서 2 개의 명령을 실행하고 싶습니다.하지만 첫 번째 명령이 성공할 경우에만 실행합니다.루비에서 처음으로 성공한 경우에만 2 개의 명령을 실행하는 방법은 무엇입니까?

bash에서 나는 연산자 &&을 사용할 것입니다. 이 키워드를 시도했지만 and 키워드인데 &&이 (가) 오류를 발생했으며 and 연산자가 예상대로 작동하지 않았습니다.

내가 그것을 사용하려는 예 :

#!/usr/bin/ruby 
# 
puts "asd" and puts "xxx" 

로 실행 :

$ ./asd.rb 
asd 
+0

어떤 언어가 무엇입니까? – sawa

+0

죄송합니다. 지금은 죄송합니다. – Patryk

+0

당신이 원하는 것은'puts "asd"\ n "puts"xxx " –

답변

2

and&&보다 낮은 우선 순위가 키워드. 둘 다 short-circuit evaluation을 사용하십시오.

먼저 puts은 항상 nil을 반환합니다. 루비에서는 nil이 거짓입니다. nil 때문에 evaulated되지 않습니다

puts("asd") && puts("xxx") 
asd 
=> nil 
두 경우 모두 puts "asd"에서

puts("asd") 반환 nil 그래서 puts "xxx"puts("xxx") :이 동일하다

2.2.0 :002 > puts "asd" and puts "xxx" 
asd 
=> nil 

:

2.2.0 :002 > puts "asdf" 
asdf 
=> nil 

이제 우리는 당신의 예를보십시오 가짜이며 단락 회로 제거가 사용되고 있습니다.

puts "asd" && puts "xxx"도 시도했지만 && 연산자의 우선 순위가 높기 때문에 구문 오류입니다. puts "asd" && puts "xxx" 때문이다

puts "asd" && puts "xxx" 
SyntaxError: (irb):3: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '(' 
puts "asd" && puts "xxx" 
        ^

puts("asd" && puts) "xxx"과 동일합니다.

2.2.0 :012 > puts("asd" && puts) "xxx" 
SyntaxError: (irb):12: syntax error, unexpected tSTRING_BEG, expecting end-of-input 
puts("asd" && puts) "xxx" 
        ^

은 참조 : this related post