루비 기본 상식!
기본 문법을 알기전에 간단하게 루비에 대해 알고 가겠습니다.
그리고 저는 Ruby를 주로 Python과 많이 비교하게 될 것 같습니다. 참고하셨으면 합니다.
루비를 만든 사람부터 알아보겠습니다.
루비는 일본의 유키히로 마츠모토가 만들었다고 합니다.
마츠모토가 좋아하는 Perl(펄), SmallTalk(스몰토크), 아이펠, 에이다, 리스프를 섞어서 명령형 프로그래밍 언어이자 함수형 프로그래밍 언어인 루비가 탄생했다고 합니다.
루비는 주로 아주 잘 만들어진 Ruby Web Framework인 Ruby on Rails를 사용하기 위해 사용됩니다.
그리고 무엇보다 루비는 어떤 부분에서든지 무료입니다.
이제 루비의 특징에 대해 알아보겠습니다.
1. 루비는 모든 것이 객체입니다!
루비를 만든 마츠모토는 말했습니다.
"펄보다 강력하고 파이썬보다는 객체지향적인 스크립트 언어가 바로 루비다." 라고 말입니다.
따라서 루비에서 모든 것들은 자신만의 속성와 액션을 갖고 있습니다. 이러한 속성을 인스턴스 변수 라고 합니다.
5.times { puts "Try Ruby!" }
이와 같이 숫자에도 메서드가 존재합니다.
2. 루비는 유연합니다!
루비는 개발자의 사고를 제한하지 않는다고 합니다.
예를 들면, + 기호 대신에 plus라는 메서드가 더 편하고 읽기 좋다면 Numeric 클래스에 plus 메서드를 추가하면 됩니다.
이렇게 미리 정의되어 있는 것에도 재정의를 함으로써 더 유연하게 사용할 수 있습니다.
3. 루비의 강력한 기능 중 하나, 블럭입니다!
유연성에 가담을 해주는 것이 이 블 이라는 것입니다.
개발자는 어떤 메서드든간에 클로저를 추가함으로써 메서드의 동작을 알려줄 수 있습니다.
클로저(Closure)란? 함수 호출시 인자로 전달될 수 있는 코드 블럭
Ex) def Manger(emp)
return emp.select { |e| e.isManager }
end
select 라는 메서드는 클로저, 즉 코드 블럭을 인자로 받는 메서드이다.
루비의 컬렉션 클래스에서 정의되는 메서드이다.
4. 루비는 다중 상속을 지원하지 않습니다!
루비는 의도적으로 단일 상속만 지원한다고 합니다.
하지만 루비에는 모듈 개념이 있습니다. 모듈은 메서드의 컬렉션입니다.
즉 each 메서드를 어떤 클래스에서 사용하고 싶다면,
Ex)
class What
include Enumerable
end
이런 식으로 클래스를 선언하게 되면 What 클래스에서는 Enumerable 이라는 모듈에 들어있는 each 메서드를 사용할 수 있게 됩니다.
루비 코드!
- var == 지역 변수!
- @var == 인스턴스 변수!
- $var == 전역 변수!
이렇게 사용하고 있습니다!
고오급 기능!
- 루비는 파이썬처럼 예외 처리 기능이 있습니다~
- 루비는 모든 객체를 대상으로 마크-스윕 가비지 컬렉터를 제공합니다~
- 루비는 OS가 지원한다면 확장 기능을 동적으로 불러낼 수 있습니다~
- 루비는 운영체제에 의존하지 않는 스레딩 기술을 제공합니다~
'Ruby > Study' 카테고리의 다른 글
루비 기초 문법(2) (0) | 2016.04.18 |
---|---|
루비 기초 문법(1) (0) | 2016.03.28 |
Nokogiri, open-uri 사용하기 (0) | 2016.03.24 |
CodeStudy 시작하기 (0) | 2016.01.11 |
루비 공부 준비중 (0) | 2016.01.08 |