かずきのBlog
C#やJavaやRubyとメモ書き

目次

Blog 利用状況
  • 投稿数 - 426
  • 記事 - 1
  • コメント - 461
  • トラックバック - 112
ニュース
  • 思い出は、いっぱい。
コメント
プログラマ的自己紹介
  • C#とRubyを趣味で。Javaを仕事で使ってやってます。 WPFをコツコツ勉強中。 IDE大好き。Visual Studio, Eclipse, NetBeansを使用中
お気に入りのツール/IDE
  • Visual Studio 2008 std
  • Eclipse
  • NetBeans6.0以降
  • 自作のツール
プロフィール
  • 大田 一希
  • 1981年1月30日産まれ
  • AB型
  • 左利き
経歴
  • 1993年 海田中学校 入学
  • 1996年 広島県立安芸南高等学校 入学
  • 1999年 某大学 環境情報学科 入学
  • 2003年 某大学 大学院 環境学研究科 入学
  • 2005年 就職して上京
  • 今に至る
アクセサリ
  • あわせて読みたい
  • ログ解析ネット証券

書庫

日記カテゴリ

 

行数的には約50行と少ないけど、結構ためになる!!
とりあえずRubyは、弱者なので知らないことだらけだ。

is_a?メソッド

Rubyで、Javaでいうinstanceof演算子やC#でいうis演算子みたいな動きをするものの存在を知った。
is_a?メソッド!

お試しコード
class Foo
end
class Bar
end

f = Foo.new
puts f.is_a?(Foo) # => true
puts f.is_a?(Bar) # => false

最後にハッシュを受け取るメソッド

Ruby on Railsのサンプルコードとかを見ると、よく最後の引数がハッシュのものがよく見られる。

f.bar("Hello", "world", {:a => true, :b => "hoge"})

みたいなヤツです。
ハッシュで渡すものは、オプション的な扱いなもので別に渡さなくても大丈夫っていうのが多い。
それの実装方法は、先ほどのis_a?メソッドを使ってハッシュかどうか判別している。
具体例を出すと下のような感じ。

def myprint *arg
  hash = arg.last.is_a?(Hash) ? arg.pop : {} # ここで引数の最後からHashを取り出してる!
  if hash[:concat]
    puts arg.join(" ") # concatにtrueが設定されてたら、引数で渡されたものをくっつけて出力
  elsif
    arg.each { |value| puts value } # concatにtrueが設定されてなかったら1つずつ出力
  end
end

myprint "Hello", "world", {:concat => true} # => Hello world
myprint "Hello", "world"                              # => Hello
                                                                   # => world

引数の最後がハッシュだったら取り出す。そうじゃなければ空のハッシュをダミーとして作る。
そうすれば、あとはお好きなようにって感じ。

#{ }の中はRuby式書けるんだよね

ダブルクォートで囲まれた文字列中の#{ }で囲まれた部分にはRubyの式が書ける。
よく使われる使い方としては、文字列中に変数の値を埋め込んだりとかかな。

10.times { |i| puts "こんにちは。あなたは#{i}番目の訪問者です" }

とても簡単じゃん。ふ~んって思ってたら、こういう使い方も出来るのか。。。と思ったコードがあった。

お試しコード
def fun value, greet
  puts "#{"こんにちは#{value}さん" if greet}今日もいい天気ですね。"
end

fun "太郎", true  # => こんにちは太郎さん今日もいい天気ですね。
fun "太郎", false # => 今日もいい天気ですね。

#{ }の中にif式とかも書けるんだよね。
出来るのは文法上当たり前だけど、その発想はなかったorz

投稿日時 : 2007年11月29日 23:33
コメント
  • # re: [Ruby]cattr_accessorのソースを読んで見て知った事
    ddnp
    Posted @ 2007/11/30 13:41
    すみません、中身は分かりませんが
    『最期』というのは人がまさに死ぬときを言います。
  • # re: [Ruby]cattr_accessorのソースを読んで見て知った事
    かずき
    Posted @ 2007/11/30 23:18
    本当だ。
    ご指摘ありがとうございます。
タイトル  
名前  
Url
コメント