일단 서론...
루비 언어에 대해 블로그에 정리를 해 두고자 합니다.
절대로!!! 강좌가 아닙니다. 제 나름대로의
정리 입니다. 왜냐 하면 저도 루비를 잘 모르기 때문이지요. 사실 언어를 이것저것 보다 보면 그런대로 쓸 수는 있어도 정말 그 특성을 잘 파악해서 '잘' 쓰기는 쉽지 않다는 생각이 듭니다. 하지만 프로그램이라는것, 프로그램 언어라는건 사람이 쓰기 편하기 위해 만든거니까 설령 좀 어색하더라도, 효율적이지 않더라도 일단 원하는대로 작동 되면 된다고 생각하고 있습니다. 최적화야 그 다음에 해도 되는거고요.
어쨌던...조금씩 정리 해 갈까 합니다.
그럼 본론으로 넘어가도록 하죠.
루비의 interactive shell 인 irb 를 이용해서 설명을 하도록 하겠습니다.
루비에서는 특별한 변수 선언은 필요하지 않습니다.
그냥 다음과 같이 사용하면 됩니다.
뭐든 스트링 출력이 기본이죠. ^^;
irb(main):001:0> s = "Hello, ruby!!!"
=> "Hello, ruby!!!"
irb(main):002:0> puts s
Hello, ruby!!!
=> nil
변수 s 에 string을 할당하고 puts 명령으로 출력했습니다.
irb(main):004:0> puts "2009/06/01 #{s}"
2009/06/01 Hello, ruby!!!
위 와 같이 출력시에 변수를 사용하고 싶으면 #{var} 를 사용해서 출력할 수 있습니다.
irb(main):005:0> a=1
=> 1
irb(main):006:0> a.class
=> Fixnum
숫자도 다음과 같이 넣어주면 됩니다. 루비는 모든것이 객체입니다. a 변수에 1 을 넣고 a 가 어떤 객체인지 알아보았더니 Fixnum이라는 군요. 그럼 소숫점 값을 넣어보죠.
irb(main):007:0> a=1.1
=> 1.1
irb(main):008:0> a.class
=> Float
음...Float 라는군요. 이번엔 음수 값을 넣어 볼까요?
irb(main):009:0> a=-1
=> -1
irb(main):010:0> a.class
=> Fixnum
irb(main):011:0> a.abs
=> 1
a 가 객체라는걸 확실히 알 수 있겠죠? a.abs 라고 했더니 음수값을 없애 버렸습니다. ^^;
다음은 리스트와 해시를 알아보도록 하죠. 꼭 필요한것이니까요.
리스트는 다음과 같이 만듭니다.
irb(main):012:0> a=[1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):013:0> a[0]
=> 1
irb(main):014:0> a[4]
=> 5
irb(main):015:0> a[5]
=> nil
다른언어에서 배열과 같지요. 뭐...그렇습니다. 대부분 언어에서 그렇듯 0 에서 부터 시작하고요. 때문에 a[5] 값은 nil 이지요. nil은 null 값을 표현하는 루비의 방식입니다.
파이썬등을 해 보셨다면 다음 구문등도 익숙하실텐데요.
irb(main):016:0> a[1..3]
=> [2, 3, 4]
irb(main):017:0> a[-1]
=> 5
이런식으로 다룰수도 있습니다. 보시면 뭔지 아시겠지요?
위에선 리스트를 ',' 로 구분했습니다. 하지만 다음과 같이 정의 할 수 도 있습니다.
irb(main):018:0> a = %w{a b c d e f, g}
=> ["a", "b", "c", "d", "e", "f,", "g"]
irb(main):019:0> a[3]
=> "d"
irb(main):020:0> a[5]
=> "f,"
f
옆의 ',' 는 저 위에서 쓰인 ',' 와 용도가 다릅니다. 리스트의 구분자가 아니라 그냥 문자죠. 그래서 a[5]를 출력해
보니 'f,' 로 ',' 까지 출력되는것을 볼 수 있습니다. perl에도 비슷한 방법이 있는데 이런면에선 perl 이
생각나는군요.
그외에 리스트를 스택이나 큐처럼 써보죠. 예제만 간단히 적습니다.
irb(main):001:0> a=[1,2,3,4,5]
=> [1, 2, 3, 4, 5]
irb(main):002:0> a.push(6)
=> [1, 2, 3, 4, 5, 6]
irb(main):003:0> a.pop
=> 6
irb(main):004:0> a
=> [1, 2, 3, 4, 5]
irb(main):005:0> a.shift
=> 1
irb(main):006:0> a
=> [2, 3, 4, 5]
위의 결과만 보셔도 아실거라고 믿습니다.
해시도 다른언어와 비슷합니다.
irb(main):033:0> a = {"apple" => "red",
irb(main):034:1* "banana" => "yellow"}
=> {"apple"=>"red", "banana"=>"yellow"}
irb(main):035:0> a["banana"]
=> "yellow"
이런식이죠.
값을 좀더 추가 해 볼까요?
irb(main):036:0> a["strawberry"] = "red"
=> "red"
irb(main):037:0> a
=> {"apple"=>"red", "banana"=>"yellow", "strawberry"=>"red"}
이렇게 추가하는 방법도 있습니다. strawberry 가 추가 되어 있는게 보이실 겁니다.
irb(main):038:0> a.keys
=> ["apple", "banana", "strawberry"]
이렇게 하면 해시의 key 들만 출력됩니다.