Boolean
비교에서 True 혹은 False를 반환하는 것을 보았을 것이다. 이 두가지는 데이터 형(Type)중 하나인 'Boolean'타입이다.
불린 타입은 값을 두가지만 가진다. 그 외의 값은 가질 수 없다.
조건문?
주어진 조건에 따라 실행하고 하지않고를 결정하는 문법이다.
if
if boolean
<수행할 문장>
end 이러한 형식으로 작성하면 된다.
irb(main):034:0* if true irb(main):035:1> puts 'seungdols : true' irb(main):036:1> end seungdols : true => nil irb(main):037:0> if false irb(main):038:1> puts 'seungdols : true' irb(main):039:1> end => nil irb(main):040:0> if true irb(main):041:1> puts 1 irb(main):042:1> puts 2 irb(main):043:1> puts 3 irb(main):044:1> end 1 2 3 => nil irb(main):045:0> if true irb(main):046:1> puts 1 irb(main):047:1> end 1 => nil
else
if문과 같이 쓰게 되며, if문의 조건이 거짓일때만 else문에도 기회가 온다.
if boolean
<수행할 문장>
else
<수행할 문장>
end
irb(main):050:0> if true irb(main):051:1> puts 1 irb(main):052:1> else irb(main):053:1* pust 2 irb(main):054:1> end 1 => nil irb(main):055:0> if false irb(main):056:1> puts 1 irb(main):057:1> else irb(main):058:1* puts 2 irb(main):059:1> end 2 => nil
elsif
if boolean
<수행할 문장>
elsif boolean
<수행 할 문장>
else
<수행할 문장>
end
위와 같은 형식으로 오게 된다. 그럼 루비의 경우 인터프리터가 한 줄 한 줄 해석하며 내용을 저장하고 end와 함께 참인 문장만 실행한다.
irb(main):069:0> if false irb(main):070:1> puts 1 irb(main):071:1> elsif true irb(main):072:1> puts 2 irb(main):073:1> elsif true irb(main):074:1> puts 3 irb(main):075:1> else irb(main):076:1* puts 4 irb(main):077:1> end 2 => nil
unless
이 경우 거짓일 때만 조건이 실행하게 된다.
모습은 유사하다.
irb(main):078:0> unless true irb(main):079:1> puts 'true' irb(main):080:1> end => nil irb(main):081:0> unless true irb(main):082:1> puts 'false' irb(main):083:1> end => nil irb(main):084:0> unless false irb(main):085:1> puts 'false' irb(main):086:1> end false => nil
간결화
코드라인을 줄이는데 기여를 하게 된다. 가장 중요한 것은 코드 가독성이다.
irb(main):087:0> if true irb(main):088:1> puts 'true' irb(main):089:1> end true => nil irb(main):090:0> puts 'true' if true true => nil
중첩?
조건문의 중첩이 가능하다!
irb(main):091:0> puts 'input your ID:' input your ID: => nil irb(main):092:0> id = gets.chomp seungdols => "seungdols" irb(main):093:0> if id == 'seungdols' irb(main):094:1> puts 'right' irb(main):095:1> else irb(main):096:1* puts 'wrong' irb(main):097:1> end right => nil irb(main):098:0> puts 'input id' input id => nil irb(main):099:0> id = gets.chomp seungdols => "seungdols" irb(main):100:0> if id == 'seungdols' irb(main):101:1> puts 'input pass' irb(main):102:1> password = gets.chomp irb(main):103:1> if password == '1111' irb(main):104:2> puts 'right' irb(main):105:2> else irb(main):106:2* print 'wrong' irb(main):107:2> end irb(main):108:1> end input pass 1111 right => nil
논리연산자
조건에 대한 논리연산을 추가해보자.
쉽게 생각하면 우리는 지금 '이것'만 물어보고 있었다. 이제는 '이것' '저것'을 같이 물어볼 수 있게 된다.
And
곱셈이라고 생각해보자 true : 1 false : 0 1*1 = 1 1*0= 0
즉 0이면 실행하지 않게 된다.
irb(main):109:0> if true and true irb(main):110:1> print 1 irb(main):111:1> end 1=> nil irb(main):112:0> if true and false irb(main):113:1> print 2 irb(main):114:1> end => nil
Or
합이라고 생각하자.
조건의 true가 하나라도 있으면 1이다.
그러므로 실행하게 된다. 그러나 하나도 true가 없으면 실행하지 않는다.
irb(main):115:0> if true or true irb(main):116:1> print 2 irb(main):117:1> end 2=> nil irb(main):118:0> if false or true irb(main):119:1> print 3 irb(main):120:1> end 3=> nil
Not
True/false를 뒤 바꾼다고 할 수 있다. 뭐 이를테면 토글시킨다라고도 말 할 수 있을거 같다.
말은 중요하지 않다. 코드로 보자.
irb(main):121:0> if !true and !true irb(main):122:1> print 3 irb(main):123:1> end => nil irb(main):124:0> if !true and !false irb(main):125:1> print 3 irb(main):126:1> end => nil irb(main):127:0>
'프로그래밍 > Ruby' 카테고리의 다른 글
Ruby 프로그래밍 - 6. 메소드(함수) (0) | 2015.02.19 |
---|---|
Ruby 프로그래밍 - 5. 반복문 (0) | 2015.02.19 |
Ruby 프로그래밍 - 3. 비교 (0) | 2015.02.19 |
Ruby 프로그래밍 - 2. 변수의 사용! (0) | 2015.02.19 |
Ruby 프로그래밍 - 1. 숫자 , 스트링 타입 (0) | 2015.02.18 |