2011년 6월 2일 목요일

Some Basic Ruby

Ruby.new
루비는 진정한 객체지향 언어이다. 루비로 하는 모든 작업은 객체에 대한 것이고 그 작업의 결과물 또한 객체이다.
루비에서 객체를 만들 때는 클래스에 있는 특별한 메서드인 생성자(constructor)를 호출한다. 가장 일반적인 방법은 new 메서드를 호출하는 것이다.

song1 = Song.new("Ruby Tuesday")
song2 = Song.new("Enveloped in Python")

클래스 안에서는 인스턴스 메서드를 정의할 수도 있다. 이 메서드는 클래스내부적으로 호출하거나 외부에서 사용할 수있는 코드 묶음이다.
객체에 메시지를 보내면 메서드가 실행된다. 보내는 메시지에는 메서드의 이름과 실행 시 필요한 형식인수를 담는다.
"gin joint".length»9
"Rick".index("c")»2
-1942.abs»1942
sam.play(aSong)»"duh dum, da dum de dum ..."



메서드 호출은 마침표 문자로 구분되는데 앞은 수신자, 뒤는 실행될 메서드이다. -1942에게 abs라는 메시지를 보내면 -1942는 인스턴스 메서드를 찾아보고 abs메서드가 있으면 이를 실행시켜 1942라는 리턴값을 보낸다.

자바 코드에서 절대값을 가져오는 방법은 아래와 같다.
number = Math.abs(number)     // Java code

Ruby는 모든 것이 객체이기 때문에 다른 객체에 의존하지 않고 처리할 수 있다.
number = number.abs

Some Basic Ruby

def sayGoodnight(name)
 result = "Goodnight, " + name
 return result
end


# Time for bed...
puts sayGoodnight("John-Boy")
puts sayGoodnight("Mary-Ellen")

1. 한줄에 하나의 표현식만 쓴다.
2. 줄의 끝에는 ";"을 꼭 넣을 필요가 없다.
3. "#"로 시작하면 해당 라인이 주석이된다. 멀티라인 주석은 "/#"으로 시작해서 "#/"으로 종결하면 된다.
4. 메서드를 정의하려면 def 키워드가 필요하다. def 다음에 메서드 이름을 쓰고 그 다음에 괄호로 싸인 메서드 인수를 쓴다.
5. 메서드 끝 부분에 키워드 end를 써준다.
6. 지역 변수인 "result"는 변수 선언없이 필요할 때 바로 사용할 수 있다.
7. 메서드의 리턴 부분은 "return result" 작성하였지만 return을 제외하고 "result" 라고만 해도 된다. 메서드에서 end을 제외한 제일 마지막 문장을 return 문장으로 인식한다.
8. puts는 Java의 System.out.println과 동일한 역활을 한다. Console에 입력된 메시지를 출력해준다.

puts sayGoodnight "John-Boy"
puts sayGoodnight("John-Boy")
puts(sayGoodnight "John-Boy")
puts(sayGoodnight("John-Boy"))

위의 4가지 puts 사용법은 동일한 내용을 출력한다. 메서드 인수가 하나일 경우 "()"을 사용하지 않을수 있다. puts 도 메서드 이기 때문에 puts sayGoodnight "John-Boy"와 puts(sayGoodnight("John-Boy"))는 동일하다.

Expression interpolation
문자열에 대해서 #{expression} 정의가 가능하다. 아래의 두 방법은 동일한 문자열을 생성한다.

result = "Goodnight, " + name
result = "Goodnight, #{name}"

#{expression}은 문자열 내부에서 객체의 메서드를 사용할수 있게 해준다. 아래에서 사용된 capitalize 메서드는 문자열의 첫글자를 대문자로 변경해주는 메서드 이다.

result = "Goodnight, #{name.capitalize}"

puts sayGoodnight("hurukku") => Goodnight, Hurukku

표현식이 단순히 전역 변수거, 인스턴스 변수, 클래스 변수 라면 "{}"를 생략해도 된다.

$greeting = "Hello" # 전역 변수
@name = "Prudence" # 인스턴스 변수

puts "#@greeting, #@name" => Hello, Prudence

"@@"은 클래스 변수를 정의할 때 사용한다.

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...