lispとrubyとpythonと その2(ruby) ver2
その2のruby編。
ほとんど更新なし。
ミリ秒取得部分とinstance_evalを書いたくらい。
ruby楽だなー。common lispに比べると・・・。
# -*- coding: utf-8 -*- #! /usr/bin/ruby -Ku #参考 #http://www.namaraii.com/rubytips/ #文字列連結 puts s = "abc" + "あいうえお" #->abcあいうえお #文字列の分解 "あaあ,いiい,うuう,えeえ".split(",").each{|e| puts e} #->あaあ # いiい # うuう # えeえ #文字列検索 puts "あいうえおかきくけこさしすせそ".index "かきくけこ" #->5 #部分文字列の取得 s = "あいうえおabcde" puts s[5..10] #->abcde #特定の文字の場所を探して部分文字列取得とかありがちじゃない? target = "あいうえお-かきくけこ" puts target[target.index("-") + 1..target.length] #->かきくけこ #文字列比較 #普通の文字列比較 puts "true" if "aaa" == "aaa" #->true #case-insensitiveな比較 #upperしてから比較 puts "true" if "aaa".upcase == "Aaa".upcase #->true #rubyでは==とeql?が同値性比較でequal?が同一性比較 puts "a" if [1,2] == [1,2] #->a puts "b" if [1,2].eql?([1,2]) #->b puts "c" if [1,2].equal?([1,2]) #=>nil arr = [1,2] puts "d" if arr.equal?(arr) #->d #数字→文字列 puts 123.000.to_s #->123.0 #文字列→数値 puts "123".to_i + 1 #->124 puts "123.000".to_f + 1 #->124.0 #日付と時刻参考 #http://www.namaraii.com/rubytips/?%C6%FC%C9%D5%A4%C8%BB%FE%B9%EF #http://doc.loveruby.net/refm/api/view/method/Time/i/strftime #日付→文字列 #現在日付 dt = Time.now require "time" puts dt.strftime "%Y/%m/%d %H:%M:%S" #ミリ秒単位での取得 #マイクロ秒がusecに入っている puts dt.strftime "%Y/%m/%d %H:%M:%S." + (dt.usec / 1000).to_s #文字列->日付 puts Time.parse("2008/07/10 12:13:14").strftime "%Y-%m-%d %H-%M-%S" #日付計算 #足し算は秒を足す (Time.parse("2008/12/24 00:00:00") + (5 * 60 * 60)).strftime("%Y-%m-%d %H-%M-%S") #->"2008-12-24 05-00-00" #引き算は差の秒が返る span = Time.parse("2008/12/24 00:00:00") - Time.parse("2008/12/13 00:00:00") printf "あと%s時間でクリスマスイブ\n", span / 60 / 60 #->あと264.0時間でクリスマスイブ #標準出力に出力 puts "こんにちは" #フォーマットするならprintf printf "%s-%s-%s", 1, 2,3 #標準入力から読み込み printf (s = readline) until s == "exit\n" #コマンドライン引数の取得 ARGV.each{|arg| puts arg} #こっちでもいい $*.each{|arg| puts arg} #コマンド名をとるときは$0fで puts $0 #その他 #object.instance_evalっていうのがあった #objectのコンテキストでブロックを実行するって # Time.now.instance_eval{ puts strftime("%Y-%m-%d %H-%M-%S") } #->2008-12-14 12-49-40 class Foo def set(msg) @fld = msg end end foo = Foo.new foo.set "hello world" foo.instance_eval{puts @fld} #->hello world