Looking for ruby Keywords? Try Ask4Keywords

Ruby Language 논리 문장으로 제어 흐름


반 직관적 인 것처럼 보이지만 논리적 연산자를 사용하여 명령문 실행 여부를 결정할 수 있습니다. 예를 들면 :

File.exist?(filename) or STDERR.puts "#{filename} does not exist!"

그러면 파일이 있는지 확인하고 오류 메시지 만 인쇄합니다. or 문은 게으르다. 즉 값이 참인지 거짓인지를 한 번 확인하면 실행이 중지된다. 첫 번째 용어가 사실대로 발견되자 마자 다른 용어의 가치를 확인할 필요가 없습니다. 그러나 첫 번째 용어가 틀린 경우 두 번째 용어를 검사해야합니다.

일반적인 사용은 기본값을 설정하는 것입니다.

glass = glass or 'full' # Optimist! 

glass 의 값을 아직 설정하지 않은 경우 'full'로 설정합니다. 보다 간결하게, or 의 상징적 인 버전을 사용할 수 있습니다 :

glass ||= 'empty' # Pessimist. 

첫 번째 문이 false 인 경우에만 두 번째 문을 실행할 수도 있습니다.

File.exist?(filename) and puts "#{filename} found!"

또 다시, and 게으르다 그래서 필요하다면 값에 도달하는 두 번째 명령문 만 실행합니다.

or 연산자는 and 보다 낮은 우선 순위를가집니다. 마찬가지로, || && 보다 우선 순위가 낮습니다. 기호 양식은 단어 양식보다 우선 순위가 높습니다. 이 기법을 언제 할당 할 것인지를 알기 편리합니다.

a = 1 and b = 2
#=> a==1
#=> b==2
a = 1 && b = 2; puts a, b
#=> a==2
#=> b==2

Ruby 스타일 가이드 다음을 권장합니다 .

and and or 키워드는 금지되어 있습니다. 최소한의 가독성은 미묘한 버그를 일으킬 가능성이 크지 않습니다. 부울 표현식의 경우 항상 &&|| 대신. 흐름 제어의 ifunless 사용 if . &&|| 또한 수용 가능하지만 덜 명확하다.