ルビー勉強とか
10630 ワード
1.クイックエントリーの例:
結果:
jiqing22zhangsan9
説明:
コンストラクション関数initialize一般関数sayname一般関数sayageはdefを関数の先頭endとして関数の末尾インスタンス化対象用クラス名とする.new()でいい
2.継承、>記号で継承
ケース:
結果:
天恩22私はお母さんを爱しています!
説明:
loveメソッドは継承されたメソッドここに中国語の文字化けを入力し、ソリューションはクラス「iconv」を導入し、その中のconvメソッドでIconvを処理する.conv('gbk','utf-8',“私は母を爱します!”)ルビーには中国語が出ないほうがいいです.
3.子クラスでの親メソッドの強化
superメソッドで
ケース:
結果:
天恩私はお母さんを爱しています!22
説明:前の2つの文はsaynameメソッドから実行されます.
4.シングルステートメソッド、クラスメソッドの書き換え
ケース:
結果:
a6bname7
説明:
修正後,bオブジェクト吊り用の方法で出力される内容が変化する.
5.メソッドアクセス制御
Rubyではメソッドのみで関数はなく,各メソッドはクラスに存在する.メソッドをクラスで定義しない場合、このメソッドはどのクラスに属しますか?答え:Object類.RubyはこれをObjectクラスのプライベートメソッドとして実装する.
ケース:
結果:
my love!そして新聞を間違えた.オブジェクトsはプライベートメソッドにアクセスできません.
6.private、publicキーワード
ケース:
結果:
1番目のメソッドが2番目、3番目のメソッドを正常に出力するのに問題があります.
メソッドの前にアクセス権を設定するほか、メソッド定義の後に設定することもできます.
ケースは次のとおりです.
効果は同じです
class Man
def initialize(name,age)
@name = name
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
m = Man.new("jiqing",22)
m.sayname
m.sayage
b = Man.new("zhangsan",9);
b.sayname
b.sayage
結果:
jiqing22zhangsan9
説明:
コンストラクション関数initialize一般関数sayname一般関数sayageはdefを関数の先頭endとして関数の末尾インスタンス化対象用クラス名とする.new()でいい
2.継承、>記号で継承
ケース:
require 'iconv'
class Man
def initialize(name,age)
@name = Iconv.conv('gbk', 'utf-8',name)
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
class Tianen<Man
def love
puts Iconv.conv('gbk', 'utf-8'," !")
end
end
t = Tianen.new(" ",22)
t.sayname
t.sayage
t.love
結果:
天恩22私はお母さんを爱しています!
説明:
loveメソッドは継承されたメソッドここに中国語の文字化けを入力し、ソリューションはクラス「iconv」を導入し、その中のconvメソッドでIconvを処理する.conv('gbk','utf-8',“私は母を爱します!”)ルビーには中国語が出ないほうがいいです.
3.子クラスでの親メソッドの強化
superメソッドで
ケース:
require 'iconv'
class Man
def initialize(name,age)
@name = Iconv.conv('gbk', 'utf-8',name)
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
class Tianen<Man
def sayname
super
puts Iconv.conv('gbk', 'utf-8'," !")
end
end
t = Tianen.new(" ",22)
t.sayname
t.sayage
結果:
天恩私はお母さんを爱しています!22
説明:前の2つの文はsaynameメソッドから実行されます.
4.シングルステートメソッド、クラスメソッドの書き換え
ケース:
require 'iconv'
class Man
def initialize(name,age)
@name = Iconv.conv('gbk', 'utf-8',name)
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
end
a = Man.new("a",6)
b = Man.new("b",7)
#
def b.sayname
puts "bname"
end
a.sayname
a.sayage
b.sayname
b.sayage
結果:
a6bname7
説明:
修正後,bオブジェクト吊り用の方法で出力される内容が変化する.
5.メソッドアクセス制御
Rubyではメソッドのみで関数はなく,各メソッドはクラスに存在する.メソッドをクラスで定義しない場合、このメソッドはどのクラスに属しますか?答え:Object類.RubyはこれをObjectクラスのプライベートメソッドとして実装する.
ケース:
def my
puts "my love!"
end
my
s = "good"
s.my
結果:
my love!そして新聞を間違えた.オブジェクトsはプライベートメソッドにアクセスできません.
6.private、publicキーワード
ケース:
class Man
def initialize(name,age)
@name = name
@age = age
end
private
def sayname
puts @name
end
def sayage
puts @age
end
public
def free
puts "i am public"
end
end
t = Man.new("tianen",22)
t.free
t.sayage
t.sayname
結果:
1番目のメソッドが2番目、3番目のメソッドを正常に出力するのに問題があります.
メソッドの前にアクセス権を設定するほか、メソッド定義の後に設定することもできます.
ケースは次のとおりです.
class Man
def initialize(name,age)
@name = name
@age = age
end
def sayname
puts @name
end
def sayage
puts @age
end
def free
puts "i am public"
end
public :free
private :sayname,:sayage
end
t = Man.new("tianen",22)
t.free
t.sayage
t.sayname
効果は同じです