맥에서 루비 설치할 때 사용했던 관련 포스트(Building and installing Ruby 1.8.6 on Mac OS X Tiger)
RDT에 RDoc과 ri명령어를 넣어주기 위해서는 따로 설치가 필요
./configure --enable-install-doc --with-readline-dir=/usr/local --enable-pthread
make
make test
sudo make install
make check
루비 기초 문법
루비는 객체지향 언어다.
클래스/메서드/ 인스턴스/생성자 - new 메서드로 호출
객체는 고유하다. 객체 아이디(Object identifier), 인스턴스 변수(Instance variables), 인스턴스 메서드(Instance method, 클래스 내부적으로 호출되는 메소드)를 갖는다.
루비에서 메소드 호출 형태 : Receiver.methodName()
자바와 달리 루비에서는 숫자 객체 자체에 절대값을 구하는 기능을 포함하고 있다.
Math.abs(number) <-> number.abs
루비는 한 줄에 하나의 표현식만 쓴다면 세미콜론을 넣을 필요가 없다.
주석은 #을 사용하면 줄 끝까지 적용된다.
메소드를 정의하려면 def키워드가 필요하다.
메소드 다음에는 괄호로 싸인 메서드 형식인수를 쓴다. def method(param)
중괄호로 구분하지 않는다.
키워드 end를 써준다.
변수는 대입을 하려 할 때, 자동으로 만들어진다.
문자열을 만드는 방법 - 문자열 리터럴을 사용한다. ''나 ""를 붙여서 문자열 리터럴을 만든다.
- 작은 따옴표는 루비에서 사소한 작업시 사용하며
- 큰 따옴표는 더많은 작업을 한다. 대표적인 것으로 \n에 대한 개행 처리를 수행한다.
표현식을 삽입한다. #{expression}과 같은 형태가 있으면 이는 expression의 값으로 표현된다.
전역변수($name)나 인스턴스 변수(@name)도 다음과 같이 "#$greeting #@name"형태로 사용이 가능하다.
메소드에서는 마지막으로 실행된 표현식의 결과값이 리턴된다.
Naming Rule
지역변수, 메서드형식인수, 메서드이름은 모두 소문자나 밑줄(_)로 시작되어야 한다.
전역변수는 $
인스턴스 변수는 @
클래스 변수는 @@
클래스 이름, 모듈 이름, 상수는 대문자로 시작된다.
인스턴스 변수는 단어 사이에 밑줄을 넣어서 구분하고, 클래스 이름의 경우에는 대문자로 시작한다.
배열과 해시
Array는 []로 정의 하며, 스트링으로 구성된 배열은 %w{}를 사용하여 쉽게 정의할 수 있다.
Hash는 {}로 정의하며, {key => value} 형태로 정의한다. 객체가 없는 경우는 nil을 리턴한다.
제어문
if/elsif/else/end 와 같이 정의할 수 있다. 종료는 end로 끝난다.
while 조건문
내용
end
내용이 한 줄인 경우, 구문 변경자(statement modifier)를 사용하여 한 줄로 표시할 수 있다.
if radiation >3000
puts "위험합니다."
end
=> puts "위험합니다." if radiation >3000
정규표현식
if line ~= /Perl|Python/
puts "스크립트 언어에 대한 언급: #{line}"
end
~= 특정 문자열이 정규표현식과 매치되는지 검사하는데 사용할 수 있다.
블록과 반복자
코드블록은 중괄호나 do...end로 묶인 코드다.
{puts "Hello"}
do
puts "Hello"
end
블록을 메소드에서 다시 호출하기 위해서는 yield를 사용해서 호출할 수 있다.
블록에 매개변수를 전달하려면 |를 사용한다. call_block {|param| ...}
읽기와 쓰기
puts는 개행문자를 문자열의 끝 부분에 더해서 출력을 해준다.
print는 개행문자 없이 문자열만을 출력해준다.
둘 다(puts/print) 어떤 I/O 객체에든 사용할 수 있다.
printf(C나 perl)과 동일하다.
입력, gets 메소드를 사용하면 스트림에서 문자열 한 줄을 읽어들인다.
댓글 없음:
댓글 쓰기