Rubyやり始めメモ その1

Rubyをやり始めました.
まだまだ手探りだけど.

とりあえず色々メモしておく.
以下続きにて

変数

hoge # ローカル変数
Hoge # 定数
$hoge # グローバル変数
hoge = [] # 配列

文字列の置換

hoge = "abaca"
hoge = hoge.sub("a","d") # dbaca (非破壊的)
hoge = hoge.gsub("a","d") # dbdcd (非破壊的)
hoge = "abaca"
hoge.sub!("a","d") #dbaca(破壊的)
hoge.gsub!("a","d") #dbdcd(破壊的)

基本はsub
javascriptでいうgスイッチ付きがgsub
subとgsubをそれぞれ破壊的にしたのが,sub!とgsub!

文字列の分割

hoge = "red,blue,green"
strAry = hoge.split(",") #["red","blue","green"]
strAry = hoge.split(",",2) #["red","blue,green"]
strAry = hoge.split(",",4) #["red","blue","green",""]

javascriptと対して変わらないみたい.
第二引数に分割する要素数を指定できる.

フォルダの有無判定後,無ければ作成

Dir.mkdir(path) unless Filetest.exist?(path)
Dir.mkdir(path) if !Filetest.exist?(path)

mkdirで作成,Filetest.exist?で有無判定
unlessとifは,真偽逆

テキストデータの読み込み

begin
 fh = open(path)
rescue Errno::ENOENT
 return
end
hoge = fh.read # すべて読み込み(readAll的な)
hoge = fh.readlines[10] # すべてを読み込んだ後,10行目のみhogeに格納
fh.close

begin-rescue-endは例外処理.
open(path)でファイルが開けなかった場合は例外となり,rescueに拾われる.

テキストデータの書き込み

begin
 fh = open(path,"w")
rescue Errno::ENOENT
 return
end
fh.print hoge # hogeを書き込む
fh.close

配列の走査

ary = ["red","blue","green"]
ary.each{|l| # lに配列の要素が格納される
 # 処理
}

ary.each_with_index{ |l , i| # lに配列の要素,iにindex(要素番号)が格納
 # 処理
}

要素番号を必要としない場合はeachだけで,
必要な場合は,each_with_indexを使う.