2. WHAT IS RUBY?
간결함과 생산성을 강조한 동적인 오픈 소스
프로그래밍 언어입니다.
루비의 우아한 문법으로 자연스럽게 읽고 쓰기
편한 프로그램을 만들수 있습니다.
3. C++ VS RUBY VS JAVA
SCRIPT
▪ C++
for(int i = 0; i < 5; ++i)
puts(“hello”);
▪ RUBY
5.times { puts “hello” }
▪ Java Script
for (var i = 0; i <= 5; i++)
puts(“hello”);
4. 모든 것은 객체다.
▪ 처음에 마츠는 이상적인 문법을 가진 언어를 찾고 있
었다. 그 때를 회고하며 그는 “나는 펄보다 강력하고 파
이썬보다는 객체지향적인 스크립트 언어가 필요했다”
라고 말해다.
▪ 루비에서는 모든 것이 객체이다. 따라서 루비에서 모
든 것은 자신만의 속성과 액션을 갖는다. 객체지향 프
로그래밍에서 이런 속성을 인스턴스 변수라고 하고,
액션을 메서드라고 한다.
5. 루비의 유연함
▪ 개발자가 루비의 어떤 부분이든 자유롭게 바꿀 수 있기 때문에 매
우 유연한 언어라고 할 수 있다. 원한다면 루비 코어 부분도 제거하
고 재정의할 수 있다. 이미 존재하는 코드에 무엇인가를 덧붙일 수
도 있다. 루비는 기본적으로 개발자의 사고를 제한하지 않는다.
class Numeric
def plus(x)
self.+(x)
end
end
y = 5.plus 6
# 이제 y는 11이 되었다
6. 블럭
▪블록은 코드를 데이터와 같이 취급하게 해주는 기능이다. 즉,
함수를 정의하는 식으로 블록을 정의하여 다른 메소드에 이를
인자로 넘길 수 있다.
>> ["apple", "banana", "orange"].map {|fruit| fruit.upcase}
=> ["APPLE", "BANANA", "ORANGE"]
7. 텍스트 처리 #01
▪루비의 텍스트 처리 기능은 Perl을 그대로 벤치마킹했다.
▪여기서 주목할 부분은 루비가 Perl 스타일의 텍스트 처리
기능을 온전히 객체지향적으로 구현하고 있다는 점이다
>> /([0-9]+)/.class
=> Regexp
>> /([0-9]+)/.=~("A year has 365 days.")
=> 11
# 0-9 즉 숫자가 있는 첫 위치를 반환
8. 텍스트 처리 #02
▪텍스트 처리에 있어 정규식의 주요 사용 케이스 중 하나는
바로 텍스트의 일부를 치환하는 작업이다.
▪루비에서는 문자열 객체의 'sub' 메소드와 정규식 패턴을
사용하여 문자열의 특정 부분을 치환할 수 있다.
>> "banana".sub(/a/, "@")
=> "b@nana"
9. 텍스트 처리 #03
▪매칭되는 모든 패턴을 치환하고 싶다면, 'sub' 대신에 'gsub'를
사용한다.
>> "banana".gsub(/a/, "@")
=> "b@n@n@"
10. 프로시저 (proc)
▪ Proc와 블럭의 다른 점이라면, 블럭은 한번만 사용하기 위해서 적당한 방법이고
Proc는 재 사용이 가능하다라는 점이다.
class MyClass
def initilize(thing, &action)
@action = action
end
def do_thing
@action.call(self)
end
end
run = MyClass.new("RUN") { ... }
stop = MyClass.new("STOP") { ... }
11. 람다 (lambda)
▪익명함수다. 프로시저처럼 재사용이 가능하다. 차이라고 하면 리턴 값을 사용할 수 있다.
말그대로 익명 함수 이므로.
def n_times(thing)
return lambda {|n| thing * n }
end
p1 = n_times(23)
p1.call(3) -> 69
p1.call(4) -> 92
p2 = n_times("Hello ")
p2.call(3) -> "Hello Hello Hello "
13. 참고 자료
▪http://tryruby.org/
▪http://ruby-lang.org/ko
▪http://beyond.daesan.com/pages/ruby-broadens-your-
thinking
▪인사이트 프로그래밍
루비 http://www.yes24.com/24/goods/2314079