Ruby の勉強を初めて気になったところをあれこれ 1

Rubyの勉強を初めてから、ただいまパーフェクトRubyとプログラミング言語Rubyという書籍を並行して進めていってます。この2冊は進行が随分と違うのですが、この2冊を同時に進めてみて気になったとこやらをあれこれツラツラと書いてみます。この進め方もなかなか面白いです。カニバサミ勉強法。

・数値じゃない?

to_i で数値化しないと、数値を入れようが、zero? そんなメソッド知らんと言われる。

#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

n = ARGV[0].to_i

if n.zero?
puts '0でした'
elsif n.even?
puts '偶数です'
elsif n.odd?
puts '奇数です'
end

理由はこれ(と思う)

irb(main):001:0> ARGV[0].class
=> NilClass
irb(main):002:0> 1.class
=> Fixnum
irb(main):003:0> ARGV[0].to_i.class
=> Fixnum

 

・こんな感じでもウゴク

何となく、これで動くんだって思ったので登録。
まだまだ慣れてない感じがありあり。
久しぶりにPythonを見て、閉じないんだ!って思うくらい馴染んでない。

#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

class Hoge
 def moge
  yoge = 'roge'

   case yoge
    when 'roge' then
    'Yes!'
    when 'woge' then
    'no'
    end
 end
end

you = Hoge.new

p you.moge
[takeken@localhost ~]$ ruby test.rb
"Yes!"

 

・ローカル変数の扱いはC言語の時と同じ感じだけれど

プロトタイプ宣言とかなくてクラスはライブラリでまとめてrequireするのがRuby… と思う。
でもRubyをやりだしてJqueryがまだ見れるようになった。

[takeken@localhost ~]$ ruby test.rb
a
Alice
Bob
Carol
"Carol"
""

[takeken@localhost ~]$ cat test.rb
#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

name = ''

class Hoge

   def tage

       for name in %w(a Alice Bob Carol)
           puts name
       end

       p name
   end
end

hoge = Hoge.new()

hoge.tage

p name

 

であるからして〜、上と下は同じです。
分けて書いてみると変数がどうなっているか分かりやすいのかな。

[takeken@localhost ~]$ ruby test.rb
a
Alice
Bob
Carol
"Carol"
""
[takeken@localhost ~]$ cat test.rb
#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

require './hoge.rb'

name = ''

hoge = Hoge.new()

hoge.tage

p name
[takeken@localhost ~]$ cat hoge.rb
#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

class Hoge

  def moge

   languages = %w(Perl Python Ruby)                                                       
   i=0 

   while i < languages.length
    puts "Hello, #{languages[i]}."
    i += 1
   end
  end 

  def tage

   for name in %w(a Alice Bob Carol)
    puts name
   end 

   p name
  end
end

 

・BEGINの扱い。

最初に読み込むBEGIN。実行結果を見てみると!!が出ていないのがわかる。
BEGINにいった後はまた上からだってのが分かりやすいと思ったスクリプト。

#!/home/takeken/.rbenv/shims/ruby
# coding: utf-8

print " and "

END {
print "!!\n"
}

print "World\n"

exit!

BEGIN {
print "Hello"
}

exit!
[takeken@localhost ~]$ ruby hoge.rb
Hello and World

 

・こんなのもありでオモロイ。

irb(main):002:0> printf("%.10f\n", Math.sqrt(2))
1.4142135624
=> nil

 

・エンコードにも色々あるらしい

p Encoding.default_external #デフォルト外部エンコーディング
p Encoding.default_internal #デフォルト内部エンコーディング
p Encoding.locale_charmap #現在のロケール

 

とりあえずパート1はこんな感じ。

ついにMacデビューしたー。んで色々とセットアップに追いやられていて数日間ほどRubyってなかったのですが、ぼちぼち出来上がりに近づいてきたので、Ubuntuの環境が移行し終わったらまたRubyな日々に戻る予定。他にも過去にC言語で書いたものをRubyで書きなおしても面白そうなのだけれど、ぼちぼちにしないと今年にやりたいことがやり終わらないかもしか。