Skip to content

Ruby

루비(Ruby)는 마츠모토 유키히로(松本行弘)가 개발한 동적 객체 지향 스크립트 프로그래밍 언어이다. 루비는 순수 객체 지향 언어이다. 루비에서의 정수나 문자열 등을 포함한 데이터 형식 등 모든 것이 객체이다.

기능에는 클래스 정의, 가비지 컬렉션, 강력한 정규 표현식 처리, 다중 스레드, 예외 처리, 반복, 클로저, Mixin, 연산자 오버로드 등이 있다. 구문은 ALGOL계를 계승하면서 가독성을 중시하고 있다.

오랫동안 언어 사양이 명문화되지 않고 마츠모토의 구현 언어 사양에 준하는 것으로 간주되어 왔지만, 2010년 6월 RubySpec으로 언어 사양을 책정 중이다.

Categories

Syntax

Libraries

  • timetrap - Timetrap은 루비로 작성된 간단한 명령 줄 시간 추적기입니다. 사용하는 시간을 추적 할 수있는 사용하기 쉬운 명령 줄 인터페이스를 제공합니다.

Variables

Signature

Brief

Example

$

전역 변수

$name = 'yundream'

@

인스턴스 변수 이해하기 쉽게 클래스 멤버 변수

@name = 'yundream'

[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를 이용해서 일정 블럭을 주석처리할 수 있다.

name = 'test_text' # COMMENT
=begin
COMMENT
=end

Evaluate String

작은 따옴표(')에의해 둘러싸인 문자열은 그 안에 있는 내용이 그 자체로 문자열을 구성한다는 뜻이다. 큰 따옴표(")로 둘러싸인 문자열은 그 안에 담긴 내용을 평가(Evaluate)한다.

language = 'Ruby'
puts "hello, #{language}"

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

doYouLike = Proc.new do |aGoodThing|
  puts 'I *really* like '+aGoodThing+'!'
end

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

Article

References


  1. Learn_to_Program_-_Ruby.zip 

  2. Joinc_Ruby_Tutorial1_-_Basic.pdf 

  3. Joinc_Ruby_Tutorial2_-_Class.pdf