ruby学習ノート(2)類の基本使用
3576 ワード
ruby言語とc#のいくつかの重要な違いは、
1.rubyは動的言語であり、c#は静的言語である.すなわち、オブジェクトがnewから出た後、rubyはオブジェクトインスタンスに属性またはメソッドを動的に追加することもできる(javascriptも同様)
2.rubyでは変数タイプという概念を意図的に弱体化しており、デフォルトでは変数/メソッドは具体的な(戻る)タイプを宣言する必要はありませんが、実際にはruby内部では、変数の値に基づいてタイプが自動的に割り当てられます.(puts変数.classで表示できます)
3.rubyはc#に対して、親クラスのprivateメンバーが、子クラスで使えるという雷の場所があるかもしれません.
...他のところは、勉強が深くなってから書きます.
最後のテストコードでは、rubyのクラスの基本的な使い方を示しています.
実行結果は次のとおりです.
作者:菩提樹の下の楊過
出典:http://yjmyzz.cnblogs.com
1.rubyは動的言語であり、c#は静的言語である.すなわち、オブジェクトがnewから出た後、rubyはオブジェクトインスタンスに属性またはメソッドを動的に追加することもできる(javascriptも同様)
2.rubyでは変数タイプという概念を意図的に弱体化しており、デフォルトでは変数/メソッドは具体的な(戻る)タイプを宣言する必要はありませんが、実際にはruby内部では、変数の値に基づいてタイプが自動的に割り当てられます.(puts変数.classで表示できます)
3.rubyはc#に対して、親クラスのprivateメンバーが、子クラスで使えるという雷の場所があるかもしれません.
...他のところは、勉強が深くなってから書きます.
最後のテストコードでは、rubyのクラスの基本的な使い方を示しています.
class People # javascript ,ruby public,private
def initialize(_name) # , :initialize
@name = _name; # : @
end
def to_string # C# , ToString ruby
"My name is #{@name}" #ruby ,
end
def get_name_size
return @name.length # ( )
end
def test # ,
puts "private method(test) in People."
end
def show_name
test # ,
puts "name = #{@name}"
end
attr_accessor:name # , ruby : , @name , @ ,ruby c# set{value = @name},get{return @name}
private:test # test private
protected:get_name_size # get_name_size ( )
end
aPeople = People.new("jimmy");# People
puts aPeople.to_string # to_string
#puts aPeople.get_name_size # ,
#puts aPeople.test # ,
aPeople.show_name
puts aPeople.name
aPeople.name = " " #
aPeople.show_name
#
class Man < People
def initialize(_name)
super
@sex = true
end
attr_reader:sex # sex
def call_protected_method
puts get_name_size #
end
def call_protected_method2(man1)
puts man1.get_name_size # : ,
end
def call_private_method # !!!
test
end
def call_private_method2(man1)
man1.test # : , , private protected
end
end
puts "******************************"
aMan = Man.new("jimmy.yang");
aMan.show_name
aMan.call_protected_method
puts aMan.sex
aMan.call_private_method
aMan2 = Man.new("Mike")
aMan.call_protected_method2(aMan2);
#aMan.call_private_method2(aMan2);
a = "abc";
#aMan.call_protected_method2(a); # ruby , , : ,
puts aMan.class # aMan
実行結果は次のとおりです.
>ruby classDemo.rb
My name is jimmy
private method(test) in People.
name = jimmy
jimmy
private method(test) in People.
name =
******************************
private method(test) in People.
name = jimmy.yang
10
true
private method(test) in People.
4
Man
>Exit code: 0
作者:菩提樹の下の楊過
出典:http://yjmyzz.cnblogs.com