只今Ruby勉強中

プログラミングRuby―達人プログラマーガイド

うさぎさんと一緒にRubyの勉強をしているオレの記録。

間違ってる所とかいっぱいあると思いますけど、誰でもコメント出来るので気軽に教えて下さい。

普段は 鷹の島 って所で書いてます。

現在のハマリポイント - yield, succ?, Proc & 後で

2006-07-02 (Sun)

Ruby は何でもオブジェクト  Ruby は何でもオブジェクト - 只今Ruby勉強中 を含むブックマーク

  • うさぎ本: p6〜7くらい

引数に渡して呼び出すんじゃなくて、定義されているメソッドを呼び出すって事らしい。

irb(main):001:0> str = "Hello World"
=> "Hello World"
irb(main):002:0> str.length
=> 11
irb(main):001:0> num = -10
=> -10
irb(main):002:0> num.abs
=> 10

Javascript もこんな風だよね。

irb がすんげえ便利げ  irb がすんげえ便利げ - 只今Ruby勉強中 を含むブックマーク

こういうのテストするのに一々エディタでホゲってから実行とかめんどくさくてやってらんないから、チョー助かる。ていうか、今まで電卓の代わりに perl -e とかする事が多かったけど、今後は screen 内に irb を一個飼っておいてそれ使うようにしよう。

文字列と数値は別物  文字列と数値は別物 - 只今Ruby勉強中 を含むブックマーク

' とか " で囲うと文字列リテラル。そうじゃない場合は数値(リテラル?)。

文字列リテラルには abs とかのメソッドが定義されていないので使えない。

irb(main):001:0> num = '-10'
=> "-10"
irb(main):002:0> num.abs
NoMethodError: undefined method `abs' for "-10":String
        from (irb):2
        from :0
irb(main):003:0> num = -10
=> -10
irb(main):004:0> num.abs
=> 10

始めてのメソッド定義  始めてのメソッド定義 - 只今Ruby勉強中 を含むブックマーク

  • うさぎ本: p8〜10くらい

メソッド定義も irb で出来ちゃう。えーと、def がメソッドの定義の開始で #{name} が変数の展開と。end で終了。

irb(main):001:0> def sayGoodnight(name)
irb(main):002:1> return "おやすみ, #{name}"
irb(main):003:1> end
=> nil
irb(main):004:0> sayGoodnight('gaba')
=> "\244\252\244\344\244\271\244\337, gaba"

ありゃ、日本語は通らないんだ。*1

irb(main):001:0> def sayGoodnight(name)
irb(main):002:1> return "Goodnight, #{name}"
irb(main):003:1> end
=> nil
irb(main):004:0> sayGoodnight('gaba')
=> "Goodnight, gaba"
irb(main):005:0> sayGoodnight('taka')
=> "Goodnight, taka"

はてな記法  はてな記法 - 只今Ruby勉強中 を含むブックマーク

いちいち余計な所に br タグが入って邪魔で仕方ない。br なんて不要だからこの機能を外したいんだけど、そんな事は出来ないのかな?

どうもスーパープレ記法の後側が空行だと br が挿入される様子…。

irb で日本語出来た  irb で日本語出来た - 只今Ruby勉強中 を含むブックマーク

なにやら起動する時に引数を取ってやれば良いみたい。

$ irb
irb(main):001:0> "ほげ"
=> "\244\333\244\262"
irb(main):002:0>

$ irb -Ke
irb(main):001:0> "ほげ"
=> "ほげ"

-Ke は漢字コードが euc って事らしい。他の文字コードは…、後で調べる。

*1:出来た!! id:gaba:20060702#p6

takahashimtakahashim2006/07/03 00:23文字コードのきりかえは、irb上でもできます。
その場合は、irbで、
$KCODE='e'
などと実行してください。

gabagaba2006/07/03 08:26ありがとうございます、これは、グローバル変数ってやつですね。

トラックバック - http://rubyist.g.hatena.ne.jp/gaba/20060702