Ruby

비교

본 토픽은 현재 준비중입니다.공동공부에 참여하시면 완성 되었을 때 알려드립니다.

프로그래밍의 비교 기능은 이것만으로는 효용이 크지 않다. 후속 수업인 조건문에서 그 효용이 드러나기 때문에 조금 지루하더라도 조건문까지만 인내하자.

연산자

연산자란 값에 대해서 어떤 작업을 컴퓨터에게 지시하기 위한 기호인데 우리는 이미 연산자를 사용했다. 아래 예제 중에서 '='는 우항의 값인 1을 좌항의 변수 a에 대입하는 '대입 연산자'다. 루비의 주요 연산자는 tutorials points의 항목을 참고하자. 연산자가 무엇인가에 대한 이해를 돕기 위한 것일 뿐 외울 필요는 없다. 차차로 알게 된다.

a=1

비교 연산자

프로그래밍에서 비교란 주어진 값들이 같은지, 다른지, 큰지, 작은지를 구분하는 것을 의미한다. 이 때 비교 연산자를 사용하는데 비교 연산자의 결과는 true나 false 중의 하나다. true는 비교 결과가 참이라는 의미이고, false는 거짓이라는 뜻이다. 아래는 주요한 비교 연산자들의 종류와 그에 따른 예제들이다.

==

좌항과 우항을 비교해서 서로 값이 같다면 true 다르다면 false가 된다. '='가 두개인 것을 주의하자. '='가 하나인 것은 대입 연산자로 좌항의 값을 우항의 변수에 대입할 때 사용하는 것으로 의미가 완전히 다르다.

puts 1==2           #false
puts 1==1           #true
puts "one"=="two"   #false 
puts "one"=="one"   #true

!=

'!'는 부정을 의미한다. '같다'의 부정은 '같지 않다'이다. 이것을 기호로는 '!='로 표시한다. 아래의 결과는 !=의 결과인데 ==와 정반대의 결과를 보여준다.

puts 1!=2           #true
puts 1!=1           #false
puts "one"!="two"   #true
puts "one"!="one"   #false

>

좌항이 우항보다 크다면 참, 그렇지 않다면 거짓임을 알려주는 연산자다. '<'는 반대의 의미로 언급은 생략하겠다.

puts 10>20  #false
puts 10>1   #true
puts 10>10  #false

>=

좌항이 우항보다 크거나 같다. '<='는 반대의 의미로 언급은 생략하겠다.

puts 10>=20     #false
puts 10>=1      #true
puts 10>=10     #true

<=>

복합연산자로 다음과 같은 결과를 돌려준다.

  • 좌항이 우항보다 크다면 1
  • 좌항이 우항보다 작다면 -1
  • 좌항과 우항의 값이 같다면 0
puts 10<=>20    	#-1
puts 10<=>1 		#1
puts 10<=>10 		#0

=~

매치(match) 연산자로 특정 문자열이 정규표현식과 매치되는지 검사한다. 일치하는 결과를 찾아내면 패턴의 첫번째 위치를 반환하고, 그렇지 않으면 nil을 반환한다. (ifwhile 문 등의 조건식으로 사용 할 수 있다. )

s = 'coding everybody'
puts s =~ /coding/ #0
puts s =~ /every/  #7
puts s =~ /body/   #12
puts s =~ /code/   #nil

참고

  • 봤어요 0명

댓글

댓글 본문
  1. Rubyist
    => 이후에 나오는 값은 해당 명령을 시행하고 리턴된 값이고, puts는 값을 출력하는 명령어잆니다.

    irb(main):001:0> 1+1
    => 2
    irb(main):002:0> puts 1+1
    2
    => nil
    irb(main):003:0>

    위에서 보시는것처럼 puts 1+1을 하시면, 1+1의 값을 출력하는 명령어이기때문에 2를 출력하고 리턴값은 없어집니다.
    리턴값의 유무는 그냥 보시면 별 차이 없어보일 수 있으나 아래 코드를 보시면,

    irb(main):003:0> i = 1+1
    => 2
    irb(main):004:0> puts i
    2
    => nil
    irb(main):005:0> j = puts 1+1
    2
    => nil
    irb(main):006:0> puts j

    => nil
    irb(main):007:0>

    i에는 1+1의 리턴값이 저장되나 puts 1+1을 할당한 j는 nil인것을 확인하실 수 있습니다.
    대화보기
    • 닉홀든
      값을 입력할때
      1+1
      =>2
      puts 1+1
      =>2
      이렇게 같은값이 출력되는걸 알수있는데 puts 사용과 비사용시 차이점이있나요?