Ruby &ActiveSupport  for expart  藤岡岳之(xibbar)
今後の予定classとmoduleからやりましょう 継承、mix-in ネームスペース define_XXX 匿名メソッド XXX_evalrubyのイテレータクロージャってなんジャlambdaとproc
classの初歩と継承# ただの名前と点数を表示するだけ              s=Student.new("fujioka")のプログラム                         s.english=80             ...
classの解説ちょっとだけclass Student                  s=Student.new("fujioka")  @@namelist=[]                s.english=80  attr_acc...
classの入れ子class Sample  attr_accessor :value           #<Sample:0x239ec>  KATAHIRA="DO"                  #<Sample::Sample2:...
moduleって何?インスタンスを作れない継承できないmix-inの対象になる
moduleをちょっとだけmodule SampleModule  PI=3.14  def self.pi                 % ruby module.rb    PI                        3.14 ...
moduleを入れ子にmodule SampleModule  module ChildModule    def child_module         % ruby module_chile.rb      "CHILD_MODULE" ...
おしまいおしまい次回以降も引き続きやりましょう
Upcoming SlideShare
Loading in...5
×

Ruby and ActiveSupport for expart

1,026

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,026
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby and ActiveSupport for expart

  1. 1. Ruby &ActiveSupport for expart 藤岡岳之(xibbar)
  2. 2. 今後の予定classとmoduleからやりましょう 継承、mix-in ネームスペース define_XXX 匿名メソッド XXX_evalrubyのイテレータクロージャってなんジャlambdaとproc
  3. 3. classの初歩と継承# ただの名前と点数を表示するだけ s=Student.new("fujioka")のプログラム s.english=80 s.puts_statusclass Student rs=RikeiStudent.new("katahira") attr_accessor :name rs.english=80 attr_accessor :english rs.math=92 def initialize(name) rs.science=85 @name=name rs.puts_status end def puts_status puts @name puts @english ~% ruby person.rb end fujiokaend 80 katahiraclass RikeiStudent < Student 80 92 解説ポイント attr_accessor :math attr_accessor :science 85 •継承 def puts_status super •attr_accessor puts @math •super puts @science end •newend •initialize •ぐらい?
  4. 4. classの解説ちょっとだけclass Student s=Student.new("fujioka") @@namelist=[] s.english=80 attr_accessor :name s.puts_status attr_accessor :english rs=RikeiStudent.new("katahira") def initialize(name) rs.english=80 @name=name rs.math=92 解説ポイント @@namelist.push name rs.science=85 end rs.puts_status •クラスメソッド def puts_status p Student.namelist puts @name p RikeiStudent.namelist •インスタンスメソッド puts @english end •クラス変数 def self.namelist •インスタンス変数 @@namelist % ruby person.rb end fujioka •オブジェクトに型があるend 80 katahira •変数に型はないclass RikeiStudent < Student 80 attr_accessor :math 92 attr_accessor :science 85 def puts_status ["fujioka", "katahira"] super ["fujioka", "katahira"] puts @math puts @science endend
  5. 5. classの入れ子class Sample attr_accessor :value #<Sample:0x239ec> KATAHIRA="DO" #<Sample::Sample2:0x23834> class Sample2 "VALUE" attr_accessor :value nil def self.katahira "DO" KATAHIRA end end class Sample3 endendsample=Sample.newp samplesample2=Sample::Sample2.newp sample2sample.value="VALUE" 解説ポイントp sample.valuep sample2.value •インスタンスものは独立しているp Sample::Sample2.katahira •クラスものは子クラスから呼び出せる
  6. 6. moduleって何?インスタンスを作れない継承できないmix-inの対象になる
  7. 7. moduleをちょっとだけmodule SampleModule PI=3.14 def self.pi % ruby module.rb PI 3.14 end 3.14 def pi PI endendp SampleModule.piclass SampleClass include SampleModuleend 解説ポイントsc=SampleClass.new •moduleをクラスメソッドのように使うp sc.pi •self.piのようにすると呼び出せる •moduleをmix-in用に使う •includeするとclassのメソッドの一部になる
  8. 8. moduleを入れ子にmodule SampleModule module ChildModule def child_module % ruby module_chile.rb "CHILD_MODULE" "SAMPLE_MODULE" end "CHILD_MODULE" end def sample_module "SAMPLE_MODULE" endendclass SampleClass include SampleModule include ChildModuleend 解説ポイントsc=SampleClass.new •同じネームスペースのものしかmix-inされないp sc.sample_modulep sc.child_module •入れ子もincludeしなければならない •Railsのソースはほとんどmoduleばっかり •ちょっとだけ見てみよう •ARの呼び出しの部分でも見てみるか。
  9. 9. おしまいおしまい次回以降も引き続きやりましょう
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×