# ===메소드의 객체별 동작===
# 1. Range: 인수가 자신의 범위 내에 있으면 true를 반환
# 2. Regexp: 인수의 문자열이 일치하는 경우는 true를 반환
# 3. Proc: 오른쪽을 인수로 해서 블록 객체를 실행한 결과 반환
# 4. Module, Class: 인수가 자신 또는 자신의 서브 클래스 인스턴스면 true 반환
# case, when문
# while, until, begin end
# for X in Y
# 무한루프문 loop do end
# continue의 기능 next
# ex) next unless language == 'Ruby' # language가 Ruby가 아니면 next
# redo 다시한번 해당 반복 수행
# if문 한줄처리 puts 'hello' if fail < 5
# 파일 내에서 플그램의 끝을 명시하려면 __end__사용
# 예외처리 begin end
# 예외발생 1. 콜스택을 거슬러 올라가서 최종적으로 톱 레벨까지 전파
# 예외발생 시키기 raise 'error' => 런타임에러 발생
# 예외catch rescue => e
# e.class, e.message, e.backtrace
# 반드시 실행 ensure
# retry 다시실행
# 대역 탈출
# catch/throw
# 가변 파라미터 *를 붙이면 여러 인수를 배열로 받을 수 있다
# block, block_given? => 블록은 파일처리에 유용(자동으로 닫아줌)
# 반복 처리 외에도 준비>본질적처리>정리 패턴 파일 열기/닫기, DB 접속/절단 트랜잭션 시작종료 잠금과 해제
# ex) 예제
=begin
def with_current_time
yield Time.now
end
with_current_time do |now|
puts now
end
=end
# <<는 배열의 마지막 요소로 추가시킴
# 출력 puts, print(줄바꿈x), printf('%04d' 1), p(디버그시 유용)
# 입력 gets
# 외부명령어 실행 '', system(), exec, spawn
# 외부파일 읽기 require
# eval 문자열=>루비코드