Ruby
루비(Ruby)는 마츠모토 유키히로(松本行弘)가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어이다. 루비에서의 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다.
기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, Mixin, 연산자 오버로드 등이 있다. 구문은 ALGOL계를 계승하면서 가독성을 중시하고 있다.
오랫동안 언어 사양이 명문화되지 않고 마츠모토의 구현 언어 사양에 준하는 것으로 간주되어 왔지만, 2010년 6월 RubySpec으로 언어 사양을 책정 중이다.
Categories
Syntax
- Code Block & Yield
- Ruby:Symbol
- Ruby:Mixin
Libraries
- timetrap - Timetrap은 루비로 작성된 간단한 명령 줄 시간 추적기입니다. 사용하는 시간을 추적 할 수있는 사용하기 쉬운 명령 줄 인터페이스를 제공합니다.
Variables
Signature | Brief | Example |
$ | 전역 변수 | |
@ | 인스턴스 변수 이해하기 쉽게 클래스 멤버 변수 | |
[a-z_!] | 지역 변수 || name = 'unknown' | |
[A-Z!] | 상수 || NAME = "KIM" |
Special variables
-
$!
: 마지막 에러 메시지 -
$@
: 에러 위치 -
$_
: 가장 최근에 gets로 읽은 문자열 -
$.
: 코드의 줄 번호 -
$&
: regexp로 마지막에 매칭된 문자열 -
$~
: the last regexp match, as an array of subexpressions -
$n
: n번째로 매칭된 문자열 -
$=
: case-insensitivity flag -
$/
: input record separator -
$\
: output record separator -
$0
: 실행 프로그램 이름 -
$*
: 명령 행 인자들 -
$$
: 프로세스 아이디 -
$?
: 최근 실행한 자식 프로세스의 종료 번호 -
ARGV[n]
: n 번째 명령 행 인자 -
$DEBUG
: 디버깅 메시지 -d를 키면 활성화 -
$stderr
: 표준에러 -
$stdin
: 표준입력 -
$stdout
: 표준출력 -
$:
: 스크립트가 로드한 모듈 이름들
Comment
#
이후의 문자들은 주석으로 처리한다. 또는 =begin
과 =end
를 이용해서 일정 블럭을 주석처리할 수 있다.
Evaluate String
작은 따옴표(')에의해 둘러싸인 문자열은 그 안에 있는 내용이 그 자체로 문자열을 구성한다는 뜻이다. 큰 따옴표(")로 둘러싸인 문자열은 그 안에 담긴 내용을 평가(Evaluate)한다.
Iterators and Blocks
Iterator는 데이터를 순환하기 위한 순환객체로 이해하면 되겠다. 루비는 배열도 Iterator을 가지고 있다. .each
를 사용하면 된다.
presidents = ["Ford", "Carter", "Reagan", "Bush1", "Clinton", "Bush2"]
presidents.each {|prez| puts prez}
## OR:
presidents.each do |prez|
puts prez
end
{}
vs do/end
{}
는 Iterator의 결과를 적용하고, do/end
를 사용하면 Iterator에 적용한다.
Create Proc
List of methods
## Total methods.
Greeter.instance_methods
## Ignore parent methods.
Greeter.instance_methods(false)
Methods checker
irb(main):041:0> g.respond_to?("name")
=> false
irb(main):042:0> g.respond_to?("say_hi")
=> true
irb(main):043:0> g.respond_to?("to_s")
=> true
Setter & Getter
irb(main):044:0> class Greeter
irb(main):045:1> attr_accessor :name
irb(main):046:1> end
irb(main):047:0> g = Greeter.new("Andy")
=> #<Greeter:0x3c9b0 @name="Andy">
irb(main):048:0> g.respond_to?("name")
=> true
irb(main):049:0> g.respond_to?("name=")
=> true
irb(main):051:0> g.name="Betty"
=> "Betty"
irb(main):052:0> g
=> #<Greeter:0x3c9b0 @name="Betty">
irb(main):053:0> g.name
=> "Betty"
irb(main):054:0> g.say_hi
Hi Betty!
=> nil
Frameworks
See also
Favorite site
Basic tutorial
- [추천] Joinc: Ruby Tutorial 01 - 루비 언어 튜토리얼 2
- [추천] Joinc: Ruby Tutorial 02 - 루비 클래스 사용 3
- Ruby 기초 문법 정리
- Ruby - 기초 문법
- 루비(Ruby) 1.8.x 문법 정리
- Ruby 문법 강좌 : 출력문 - 1. 안녕 루비야
- Ruby 기초 문법 정리
- Ruby 클래스, 객체, 변수
Article
- [추천] 왜 루비가 매모리를 이렇게나 많이 먹을까? (OS, 인터프리터의 메모리 관리, 페이징과 페이징 풀; 메모리 단편화 등 수록)