2008年9月23日火曜日

【初めてのRuby】

初めてのRubyで勉強。
Windows XP ruby1.8.6

1.1 objectとは
- アイデンティを有する(unique, to know the self number and the class it belongs)
- メッセージを受け取る
---【疑問点】 メッセージを送っているのはだれか?神様か?環境か?
---【疑問点】 オブジェクト同士がメッセージを送りあい、調和のとれた状態とか、アンバランスな状態とかをつくりだすことは可能か?
- 内部状態を保つ(変数のこと?)

someobject.object_id
someobject.class

イテレータ 繰り返し実行するブロック付きメソッド(higher functionと同じような機能)

Ruby上で新たな言語を構築し、動かすのが、最近のRubyプログラミング (Ruby on Rails?)

例1-8
d.days => 3
p d.days => 3 =>nil なぜnilか?
また、p d.daysの場合、objectはどれか pは何か? メソッド?
 d.days.print は、あるのか。

Rubyの機能の探し方
- 文法 組み込み関数 組み込みクラス 標準添付ライブラリの順に探す。

動的 クラスの定義は実行時 <=> 静的 C++ Java C# クラスやメソッドの定義はコンパイル時

実行時ライブラリのロード
require 'rational'
load '/path/config.rb'

command-line debuger: ruby -rdebug hello.rb

ri String ; ri File#read

インスタンスメソッド String#each_byte
クラスメソッド Time.now Time::now

1.class => Fixnum
1.methods => ["%",

Fixnum.ancestors #=> [Fixnum, Integer, ]
Fixnum.instance_methods #=> ["%", ]
Fixnum.kind_of? Class #=> true

特異メソッド 特定のオブジェクトに属するメソッド
a = "str"
def a.greet
puts "I am the object #{self.object_id}"
end
a.greet #=> I am the object 33334

大部分の演算子はメソッドのsyntactic sugar => polymorphism
1.2 + 3 #=>4.2
"str" + "ing" #=> "string"
1 <<>4
["a", "b"] << "c" #=> ["a", "b", "c"]
$stdout << "hi!" #=> hi!

0 件のコメント: