목차#

  1. 기본적인 함수[1]
  2. 문자열 관련 함수[2]
  3. 숫자 관련 함수[3]
  4. 조건문[4]
  5. 배열[5]
  6. 반복문[6]
  7. 블럭[7]
  8. 심볼과 해시[8]
  9. 시간과 날짜[9]
  10. 클래스와 객체[10]

기본적인 함수[#1]#

자바루비
null구분nullnil
객체 생성new 클래스명()클래스명.new
해당 객체가 지원하는 메소드 보기없음객체.methods.sort
문자열 출력System.out.printlnputs
문자열 길이String클래스의 length()length, size
  • ? 로 끝나는 메소드는 기본적으로 boolean형태의 값을 반환한다.
  • puts

class Hello
  puts "hello world"
end

puts함수는 자바의 System.out.println과 비슷한 함수이다. 차이점이라고 한다면 인자를 여러개 받을수 있고 각각의 인자값은 개행문자를 통해 각각의 인자가 새로운 라인에 출력이 된다는 점이다.

문자열 관련 함수[#2]#

  • upcase
대문자로 변환
  • upcase!
위의 upcase함수와 기본적으로 같다. 하지만 문자열중 하나도 변환이 되지 않은 상태. 즉 문자열 모두가 대문자로 이루어져 있다면 nil을 반환한다.
  • downcase
소문자로 변환
  • downcase!
위의 downcase함수와 기본적으로 같다. 하지만 문자열중 하나도 변환이 되지 않은 상태. 즉 문자열 모두가 소문자로 이루어져 있다면 nil을 반환한다.
  • delete
재밌는 함수이다. 문자열내 특정 글자를 삭제하고 반환한다. 예제를 보면 좀더 이해가 쉬울듯 하다. 정규표현식을 사용하여 일부만 삭제하는 방법도 제공된다.

"hello".delete "l","lo"        #=> "heo"
"hello".delete "lo"            #=> "he"
"hello".delete "aeiou""^e"   #=> "hell"
"hello".delete "ej-m"          #=> "ho"

자바의 trim과 같은 함수는 제공하지 않는 것으로 보이며 delete " " 형태로 사용하면 될듯 하다.

  • 문자열 결합하기
문자열+문자열 형태도 가능하고 다음처럼 #{변수및 또다른 문자열 조합} 를 사용하는 방법도 있다.

name = "DongGukLee"
puts "name is #{name}"

물론 결과로 반환되는 값은 다음과 같다.

name is DongGukLee

숫자 관련 함수[#3]#

루비는 기본적으로 정수와 실수를 지원한다. 두 타입의 차이는 소수점이하 값이 있느냐 없느냐의 유무이다.
  • to_f
실수로 변환한다.
  • to_i
정수로 변환한다. Integer.parseInt()함수와 비슷하다.
  • to_s
숫자를 문자로 반환한다.

조건문[#4]#

  • if
예제를 보면 이해가 빠를듯.

if name.length < and name.length > 
  puts "3보다 작다"
elsif name.length < 9
  puts "9보다 작다"
else
  puts "기타"
end

if문 사용시 조건문이 false라면 unless문을 사용해서 조건물을 참으로 해서 사용할수 있다. 예를 들면 다음의 두가지는 같은 작업을 수행한다.

if name.length != 3
  puts "test"
end

unless name.length == 3
  puts "test"
end

조건문 부분에는 실제 조건문이 들어올수도 있고 어떤 특정값이 들어올수도 있다. 특정값이 들어올 경우 값이 있다면 true 값이 없다면 false와 같이 취급한다.

배열[#5]#

배열을 처리하기 위해서는 배열을 담당하는 클래스인 Array의 객체를 먼저 생성해야만 한다. 객체 생성은 다음처럼 new 함수를 사용하는 방법과 배열값을 실제 할당하는 방법 두가지가 있다. 다음에서 차례로 예제를 보여준다.

arr = Array.new

arr = ["1""2"3]

자바와 다른 점은 위 두번째 예제처럼 배열을 구성하는 각각의 값이 고정된 타입이 아니어도 된다는 점이다.

  • size
배열의 크기를 반환한다.
  • include?
배열에서 특정 객체를 포함하는지 체크한다.

arr = ["1""2"3]
puts arr.include?("1")

여기서 주의할점은 기본적으로 루비는 메소드에서 인자를 감싸는 괄호를 사용하지 않아도 되나 이 include함수의 경우 강제적으로 괄호를 사용하도록 하고 있다. 괄호를 사용하지 않으면 에러가 발생한다.

  • first
배열의 첫번째 객체를 반환한다.
  • last
배열의 마지막 객체를 반환한다.
  • 배열에 객체 추가
push메소드와 << 메소드를 사용한다. 예제를 보는게 이해에 도움이 된다.

arr = ["1""2"3]
arr.push("4")
arr << 5

  • 배열에서 객체 삭제
pop메소드를 사용한다. 인자는 별도로 없으며 마지막 객체가 하나씩 삭제된다.

arr = ["1""2"3]
arr.pop

  • reservce
배열의 순서를 바꾼다.
  • join
배열의 모든 객체값을 하나의 문자열로 결합해서 반환한다. 인자를 넣으면 각각의 객체값 사이에 인자로 넘어온 값을 채운다.

반복문[#6]#

  • for

  arr = ["1""2"3]
  for val in arr do
    puts val
  end

  • while

  i = 10
  while i > do
    puts i
    i -= 1
  end

  • 블럭을 사용한 반복(each메소드를 사용한다.)

  arr = ["1""2"3]
  arr.each do |val|
    puts val
  end

블럭[#7]#

  ["1""2"3].each {|val| puts val}

  ["lee""dong""guk"].map {|val| val.upcase}

map함수는 각각에 대한 처리를 블럭에서 하고 다시 배열을 반환하는 메소드이다. 즉 위 예제에서 map메소드의 결과는 다음과 같을것이다.

  ["LEE""DONG""GUK"]

블럭에서 사용될수 있는 메소드는 다음처럼 다양하다.

  1. all? - 배열의 모든 원소가 조건에 만족하는지 체크
  2. any? - 원소중 하나라도 만족하는지 체크
  3. find - 조건에 만족하는 첫번째 원소를 반환
  4. find_all - 조건에 만족하는 모든 원소를 반환
  5. reject - 조건에 만족하지 않는 모든 원소를 반환

여러줄의 블럭을 사용할때는 다음처럼 사용한다.

  arr = ["1""2"3]
  arr.each do |val|
    if val == "1"
      puts "success"
    else
      puts "fail"
    end
  end

심볼과 해시[#8]#

다음처럼 표시한다.
  • 심볼
  person = {:name=>"LeeDongGuk", :phone_number=>"016-582-4694"}
  person[:etc]="etc"
  puts  person[:phone_number]
  puts person
  • 해시
  h = Hash.new
  h[:val1]="hahaha"
  puts h[:val1]

시간과 날짜[#9]#

  t = Time.now
  t = Time.local(2007122515130)
  
  puts t.year
  puts t.month
  puts t.day
  puts t.hour
  puts t.min
  puts t.sec
  puts t
  
  t = t+30
  puts t

  require 'date'
  today = Date.today
  
  puts today

클래스와 객체[#10]#

self. 로 시작하는 메소드는 자바의 static메소드와 같은 의미이다.

class Fruit
  def self.apple
    return Fruit.new("Apple")
  end
  def self.banana
    return Fruit.new("Banana")
  end
  def initialize(name)
    @name = name
  end
  def name
    return @name
  end
end

f1 = Fruit.apple
puts f1.name

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-13) was last changed on 18-Jul-2007 23:19 by DongGukLee  
G’day (anonymous guest) My Prefs

Referenced by
Ruby

JSPWiki v2.8.4