ruby-LEDの日記

2006-06-24

[]文修飾子

  • if文
irb(main):001:0> radiation = 3000
=> 3000
irb(main):002:0> puts "Danger, Will Robinson" if radiation > 3000
=> nil
irb(main):003:0> puts "Danger, Will Robinson" if radiation > 2999
Danger, Will Robinson
=> nil
  • while文
irb(main):004:0> square = 2
=> 2
irb(main):005:0> p square = square*square while square < 1000
4
16
256
65536
=> nil
  • 処理の後ろに条件が書けるのですね。
$ radiation=3000
$ [ $radiation=3000 ] && echo "Danger, Will Robinson"
Danger, Will Robinson
トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060624

2006-06-12

[]日本語の扱い

昨日うまくいかなかったコードid:mr-80bさんのヒントを元にLinux*1で実行してみたら。

irb(main):001:0> a = %w[ 日本語 ]

=> ["\306\374\313\334\270\354"]

irb-Ks付きで起動したら動きました!

$ irb -Ks

irb(main):001:0> a=%w{日本語 書ける かな?}

=> ["日本語", "書ける", "かな?"]

  • ありがとうございます。

*1:いつもはCygwin上で試してます。

トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060612

2006-06-11

[]配列ハッシュ

  • 配列の宣言は[]で括る。さらに、各要素を,で区切る。

irb(main):001:0> a = [ 1, 'cat', 3.14 ]

=> [1, "cat", 3.14]

irb(main):002:0> a[0]

=> 1

irb(main):003:0> a[2] = nil

=> nil

    • シェルなら()で括って、,要らない
    • C言語なら{}で括って、,必要
      • うーん、なんで,が必要なんだろうなぁ?
  • aだけだと配列全部が出てくる

irb(main):004:0> a

=> [1, "cat", nil]

    • 具体的にどう使うのかは謎
      • きっとシェル引数に渡すみたいな使い方をするのだろう、と予想
    • シェルで全部だすには${hage[@]}
      • ということは、シェルよりよく使うのかな?
    • C言語だとハイパー面倒くさいので割愛

irb(main):006:0> empty1

=> []

irb(main):007:0> empty2 = Array.new

=> []

    • とりあえず需要が無い気がするなぁ。
      • しかし二種類も方法が用意されてるのは気になる。
    • そういえば、シェルで空の配列ってどういう概念なんだろう?
    • cだと配列型のポインタだと思うんだけど
  • 単語の配列をつくるには

irb(main):008:0> a = %w{ ant bee cat dog elk }

=> ["ant", "bee", "cat", "dog", "elk"]

irb(main):009:0> a[0]

=> "ant"

    • この場合は,が要らない。""で括る必要もない。

a = %w{ 日本語 }

a = %w{ "日本語" }

a = %w{ '日本語' }

いずれもエラーがでる。

unterminated string meets end of file

    • ありゃ?日本語の文字列処理ってどうやってやるんだろう?
トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060611

2006-06-10

[]プログラミングRuby―達人プログラマーガイド 23:42

写本中(p9)にワーニングが出たぞい

irb(main):011:0> puts sayGoodnight "John-boy"

(irb):11: warning: parenthesize argument(s) for future version

Goodnight, John-boy

=> nilputs sayGoodnight "John-boy"

""の間の#{式}は展開される(p9)

irb(main):020:0> def sayGoodnight(name)

irb(main):021:1> "Goodnight, #{name}"

irb(main):022:1> end

=> nil

irb(main):023:0> puts sayGoodnight("John-Boy")

Goodnight, John-Boy

=> nil

p10の配列ハッシュで頭がパンク。続きは今度

  • %w?

ruby-LEDruby-LED2006/06/12 01:27"に書き忘れ。\nが改行に置換される。

トラックバック - http://rubyist.g.hatena.ne.jp/ruby-LED/20060610