Whiteship's Note

'Ruby의 기본적인 I/O'에 해당되는 글 1건

  1. 2006.11.04 Reading and 'Riting

Reading and 'Riting

RUBY/Manual : 2006. 11. 4. 23:02


Ruby는 다영한 I/O 라이브러리를 제공합니다. 하지만 이 책에서는 간단한 메소드 몇개 만을 사용합니다. 그 중에 두 개를 이미 보셨을 것입니다. puts와 print입니다. puts는 puts 뒤에 오는 아규먼트들을 각 각 newline(자바에서는 \n)을 추가하여 화면에 출력하며, print는 newline 문자 없이 아규먼트들을 출력해 줍니다. 또하나 자주 사용되는 것은 printf입니다. 이것은 형식 문자열로 아규먼트를 제어하는 형식입니다.(C나 Perl에 처럼)

printf "Number: %5.2f, String: %s", 1.23, "hello"

이렇게 입력을 하면

Number:  1.23, String: hello=> nil

이렇게 출력됩니다. %f는 실수를 출력할 것이고 %s는 문자열을 출력할 것이라는 것입니다. %와 f사이의 숫자는 (allowing five characters in total, with two after the decimal point) 이렇습니다. 즉 앞에 . 앞에 있는 숫자는 총 숫자를 말하고 . 뒤에 있는 숫자는 소숫점을 말한다고 합니다. 그래서 출력 실험을 해봤습니다.

irb(main):017:0> printf "%6.3f, %s", 123456789.1234567, "test"
123456789.123, test=> nil
irb(main):018:0> printf "%6.4f, %s", 123456789.1234567, "test"
123456789.1235, test=> nil
irb(main):019:0> printf "%1.4f, %s", 123456789.1234567, "test"
123456789.1235, test=> nil

. 뒤에 있는 숫자를 변경 해보니 결과물의 소숫점의 자릿수가 바뀌는 것을 확인 할 수 있습니다. 하지만 . 앞의 숫자에 어떤 영향을 받고 있는 것인지는 확인 할 수 없었습니다.

프로그램에 값을 입력시키는 방법도 여러가지가 있습니다. 그 중에 가장 전통적인 방법으로 gets를 사용합니다.

irb(main):022:0> line = gets
hi
=> "hi\n"
irb(main):023:0> print line
hi
=> nil
irb(main):024:0>

gets는 방금 읽어들인 문장을 리턴하는데 그 때 리턴되는 것을 전역 변수인 $_ 안에 저장합니다. 이 변수는 많은 경우에 기본으로 사용되는 특별한 변수 입니다. print를 아규먼트 없이 호출하면 &_ 안에 있는 것을 호출하게 됩니다. if 나 while문을 정규 표현식과 사용한다면 그 표현식은 $_ 변수에 대응하여 작동합니다. 예를 들어 다음 프로그램은 "Ruby"라는 단어간 들어간 모든 줄을 출력합니다.

while gets           # assigns line to $_
 if /Ruby/          # matches against $_
   print            # prints $_
 end

이 것을 저번 글에서 배웠던 이터레이터를 사용하여 다음과 같이 나타낼 수도 있습니다.

ARGF.each { |line|  print line  if line =~ /Ruby/ }

'RUBY > Manual' 카테고리의 다른 글

Reading and 'Riting  (0) 2006.11.04
Blocks and Iterators  (0) 2006.11.03
Regular Expressions  (0) 2006.10.05
Control Structures  (0) 2006.10.04
Arrays and Hashes  (0) 2006.10.02
Some Basic Ruby  (0) 2006.09.26
Ruby Is an Object-Oriented Language  (0) 2006.09.17
Roadmap  (0) 2006.09.16
top

Write a comment.