Ruby覚え書き
#introRuby #コメント #実行 ruby -e 'puts ("hello, world")' #変数の文字列内展開 var = "world" puts "hello #{var}" > hello world #条件分岐 i = 1 if i < 0 puts "負" elsif i > 0 puts "正" else puts "零" end > 正 if i % 2 == 1 : puts "奇数です。" end #if文を後置すること、thenの代わりに:を利用することも可能 > "奇数です" #制御構文 i = 0 while i < 10 #i < 10が成り立つ間だけ繰り返し puts i i += 1 end until i < 1 #i < 1になるまで繰り返し puts i i -= 1 end sum = 0 i = 0 for i in (1..10) #1〜10まで繰り返し sum += i end 10.times do |i| #10回繰り返し puts i end 10.times { |i| puts i} #10回繰り返し。do~endの代わりに{}も利用可 array = ["A", "B", "C"] #配列の全要素分繰り返し array.each { |string| puts string} i = 0 loop {puts i+=1} #無限ループ #関数定義 def hello(name) puts "Hello, #{name}" end hello("World.") >Hello, World. #クラス定義 class Myclass def initialize(name) #コンストラクタ @name = name end def hello puts "Hello, #{@name}" end end a = Myclass.new("World") a.hello #継承 # スーパークラスの定義 class MyClass def hello puts "Hello!" end def bye puts "Bye!" end end # サブクラスの定義 class MySub < MyClass def hey puts "hey!" end def hello puts "hello!!!!!!!!!!!!!!" end end classSuper = MyClass.new classSuper.hello classSuper.bye classSuper.hey #サブクラスのメソッドは利用できない classSub = MySub.new classSub.hey classSub.hello classSub.bye #スーパークラスのメソッドを利用できる #例外処理 begin f = File.open("c:/test.txt") print f.read f.close rescue => ex p ex retry ensure #例外の発生にかかわらず必ず実行される処理 puts "end" end #配列 ary = [1, 2, 3] #配列の標準的な定義方法 ary = %w(A B C D E) #文字列を%wで指定することにより、空白区切りで文字列配列化する ary[1..3] ary[-3..-1] ary << "F" # add list ary[3,2] = ["G", "H"] ary = [1, 2, 3, 4, 5] ary.map { |i| i / 5 } #列の各要素に対してブロックを実行し、結果を配列で返す #ハッシュ hash = {"名詞" => 1, "助詞" => 0, "形容詞" => 3 } hash.each { |key, value| puts "#{key}, #{value}" hash.has_key?("代名詞") #=> false hash.has_value?("3") #=> true hash.store("代名詞", 2) #破壊的:オブジェクトの中身を変更するメソッド。メソッド名に!を付けて呼ぶ ary = [1, 2, 3] ary.map {|i| i**i} #aryの中身は変更無し ary.map! {|i| i**i} #aryの中身に変更有り #ファイル処理 #ファイル一気に読む fileName = "c:/test.txt" f = open(fileName) print f.read f.close #ファイル一行ずつ読む File::open(fileName) {|f| f.each {|line| print line}} #ファイル指定行を読む open(fileName) {|file| print file.readlines[10]} #ファイルに書き込む f = File.open(fileName, 'w') f.puts "hello world" f.close #DB(SQLite) require 'sqlite3' db = SQLite3::Database.new("test.db") sql = "select id, name from test" db.execute(sql) { |id, name| print "#{id}, #{name}"} #ディレクトリ操作 puts "Current Directory :" Dir.pwd #カレントディレクトリ取得 puts "Change Directory to /tmp." Dir.chdir("/tmp") #ディレクトリ移動 dir = Dir.open(".") #ディレクトリ内のファイル/フォルダを取得 dir.each { |filename| filename} Dir.glob("*.htm\0*.html") #ディレクトリ内のファイルをパターンマッチで取得。複数パターンを使う場合は\0で区切る Dir.glob("pub/**/*.txt") #ディレクトリ内を再起検索 Dir.mkdir("test") #ディレクトリ作成 Dir.rmdir("test") #ディレクトリ削除※ディレクトリが空のときのみ File.rename("fileName", "NewFileName") #ファイル名変更。違うフォルダを指定した場合はファイルのコピー・移動になる File.delete("fileName") #ファイル削除 File.basename(fileName) #ファイル名のみ取得 File.dirname(fileName) #ディレクトリ名のみ取得 File.stat(filename).mtime #ファイルの最終更新日取得 File.stat(filename).size #ファイルサイズ取得 #時間 Time.new.hour.to_s + ":" + Time.new.min.to_s t = Time.new p t.strftime("%Y年%m月%d日%H時%M分%S秒") p t.strftime("%d, %B (%A)") t1 = Time.now sleep(5) t2 = Time.now puts "#{t2 - t1}秒経過しました。" シンボル、重要である
参考
逆引きRuby http://www.namaraii.com/rubytips/
Rubyプログラミング入門 http://www.ipa.go.jp/software/open/ossc/download/subject1-2_lesson.pdf