Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

Ruby組み込み定数

組み込み定数は、 STDINでいうなら、正式には Object::STDINという名前空間が定義済みということ

STDIN

標準入力である。

IOオブジェクト。getsメソッドをとったりできる

IOオブジェクトを検証。getsがprivate_methodだったので sendした

ruby -e 'p IO.__send__(:gets).chomp.capitalize'
aaa
"Aaa"
$ ruby -e 'p STDIN.gets.chomp.capitalize'
bbB
"Bbb"

STDOUT

標準出力。コンソールへの出力 putsやprintが利用可能

$ ruby -e "p STDOUT.puts(gets)"

ではないことに注目

$ ruby -e "STDOUT.puts(gets)"

STDERR

標準エラー出力。 実際にアプリケーションつくるときは出力先をログファイルなどにふりむけるのだろう

$ ruby -e 'STDERR.puts("Hello STDERR!")'
Hello STDERR!

ARGV

引数。

$ ruby -e 'p ARGV' "hoge"
["hoge"]

ENV

環境変数がHashで入っている。

$ ruby -e 'ENV.each{|k, v| puts("#{k}: #{v}")}'
RBENV_VERSION: 2.1.5
TERM_PROGRAM: Apple_Terminal
TERM: xterm-256color
SHELL: /bin/bash
...
...

ARGF

スクリプトに指定された引数をファイル名とみなして、仮想的に扱えるようにしたもの

# hoge.rb
puts あなたのお名前何ですか?
$ ruby -e 'ARGF.each_line{|l| puts l}' "Documents/test/hoge.rb"

RUBY_ENGINE, RUBY_COPYRIGHTなど

$ ruby -e '[RUBY_ENGINE,RUBY_COPYRIGHT,RUBY_DESCRIPTION,RUBY_PATCHLEVEL,RUBY_PLATFORM,RUBY_RELEASE_DATE,RUBY_VERSION].each{|v| puts v}'
ruby
ruby - Copyright (C) 1993-2014 Yukihiro Matsumoto
ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-darwin14.0]
273
x86_64-darwin14.0
2014-11-13
2.1.5

DATA

DATA

DATA.each {|line|
  print line
} #=> 漢詩が順番に出力される
__END__
静夜思 李白
牀前看月光
疑是地上霜
擧頭望山月
低頭思故郷