ルビーは学びながら覚える
6411 ワード
ルビーは学びながら覚える
この主な説明クラス
Rubyはクラスを定義します@で始まるクラス変数 @で始まるのはインスタンス変数 である.$で始まるグローバル変数 小文字または先頭はローカル変数 クラスのオブジェクトの作成
1.対象
クラスで定義されたメソッドをクラスのメンバー関数と呼びます.newキーワードを使用してクラスを貫通するオブジェクト
次のようになります.
2.initializeメソッド
initialize関数はクラス初期化関数で、オブジェクトの作成時に自動的に呼び出され、newでパラメータをinitializeメソッドに渡すことができます.
グローバル変数
1.先ほど述べたように、$で始まるのはグローバル変数で、クラス間で使用できます.
インスタンス変数
@で始まるインスタンス変数は、次のような特定のインスタンスまたはオブジェクトにまたがることができます.
クラス変数
@@で始まり、メソッド定義で使用するには初期化が必要です.クラス変数はクラスに属し、クラスの属性であり、クラス変数は異なるオブジェクトにわたって使用できます.
ローカル変数
ローカル変数はメソッドで定義された変数であり、メソッド外では定義できない.ローカル変数は小文字またはアンダースコアで指定されます.冒頭の.
上記の方法のid,name,addrのように
クラス内のメソッド
Javaを勉強したことがあるなら、プライベート(private)とパブリック(public)に慣れていないに違いありません.
同様にRubyにもprivateとpublicがあり、メソッド定義がクラス定義外の場合、このメソッドはデフォルトでprivateとしてマークされ、クラス定義ではデフォルトでpublicとマークされます.
コードブロックコードブロックとは何ですか?
ブロックは大量のコードから構成されています.
コードは括弧doに含まれています...end内;ブロックはメソッド呼び出しの後にのみ続くことができます.例えば、あなたのコードブロックはblockと呼ばれます.test、blockを定義する必要があります.test同じ名前のメソッドでコードブロックを呼び出す yield文 メソッドの内部では、yieldの役割は占有であり、yieldが実行されるとコードブロックの内容が実行される.|x|はコードブロックで使用され、受け入れるために使用されます.
例:
結果: BEGINおよびendブロック BEGINとENDブロックは、それぞれ、プログラムがロードされて実行され、プログラムが終了したときに実行されるコードブロックを定義する.個人的にはこれをライフサイクルと見なすことができます
結果:
演算子
1.Rubyの多くの演算子は他の言語と同じである(例えば、基本的な+、-、*、/算術演算、ビット演算や論理演算など)が一部異なるので、以下ではRubyの一部の演算子について操作実験を行う.
2.比較演算子eql?:元のパラメータが受信したパラメータと同じタイプと値を持つ場合はtrueを返します.
例:
3.並列割付
例:
4.変数交換
5.三元演算子
6.範囲演算子
Rubyには2つの範囲演算子があり、それぞれ..と...
..開始点から終了点までの範囲(開始点と終了点を含む)を作成します.
...:開始点から終了点までの範囲を作成することを示します(開始点は含まれますが、終了点は含まれません).
例:
7.defined?演算子
defined? 演算子は、伝達されたパラメータが定義されているかどうかを呼び出し、式が定義されていない場合はnilを返し、定義されている場合はパラメータ記述を返します.
例:
8.点演算子と二重コロン演算子
Rubyでは、クラスとメソッドを定数として使用できます.演算子:モジュール名と2つのコロンを使用して定数を参照できます.二重コロン演算子を使用すると、クラスまたはモジュール内の定数、インスタンスメソッド、およびクラスメソッドを定義できます.クラスまたはモジュール外の任意の場所からアクセスできます.
例:
接頭辞式が使用されていない場合、デフォルトではメインObjectクラスが使用されます.Procは,ブロックとそのcontext(局所変数の役割ドメインおよびスタックフレームワーク)をオブジェクト化処理した後に得られるプロセスオブジェクトである.
この主な説明クラス
Rubyはクラスを定義します
#!/usr/bin/ruby -w
class Customer
@@no_of_customer = 0
def hello(id ,name ,addr)
@cust_id = id
@cust_name = name
@cust_addr = addr
end
end
1.対象
クラスで定義されたメソッドをクラスのメンバー関数と呼びます.newキーワードを使用してクラスを貫通するオブジェクト
次のようになります.
#!/usr/bin/ruby -w
class Customer
def hello
puts "Hello World"
end
end
cust1 = Customer.new
#new
cust2 = Customer. new
cust1.hello
cust2.hello
2.initializeメソッド
initialize関数はクラス初期化関数で、オブジェクトの作成時に自動的に呼び出され、newでパラメータをinitializeメソッドに渡すことができます.
#!/usr/bin/ruby -w
class Customer
@@no_of_customer = 0
def initialize(name)
@cust_name = name
end
def hello
puts "Hello #{cust_name}"
end
end
cust = Customer.new("Nick")
cust.hello
グローバル変数
1.先ほど述べたように、$で始まるのはグローバル変数で、クラス間で使用できます.
#!/usr/bin/ruby
$global_var = 10 #
class Class1
def print_global
puts "Global variable in Class1 is #$global_var."
# "#",
end
end
class Class2
def print_global
puts "Global variable in Class2 is #$global_var."
end
end
class1obj = Class1.new #
class1obj.print_global # ,
class2obj = Class2.new
class2obj.print_global
インスタンス変数
@で始まるインスタンス変数は、次のような特定のインスタンスまたはオブジェクトにまたがることができます.
#!/usr/bin/ruby # cust.rb
class Customer
def initialize(id, name, addr)
@cust_id=id # cust_id
@cust_name=name
@cust_addr=addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
#
end
end
クラス変数
@@で始まり、メソッド定義で使用するには初期化が必要です.クラス変数はクラスに属し、クラスの属性であり、クラス変数は異なるオブジェクトにわたって使用できます.
#!/usr/bin/ruby # class_var.rb
class Customer
@@no_of_customers=0
def initialize(id, name, addr)
@cust_id=id
@cust_name=name
@cust_addr=addr
end
def display_details()
puts "Customer id #@cust_id"
puts "Customer name #@cust_name"
puts "Customer address #@cust_addr"
end
def total_no_of_customers()
@@no_of_customers += 1
puts "Total number of customers: #@@no_of_customers"
end
end
cust1=Customer.new("1", "John", "Wisdom Apartments, Ludhiya")
cust2=Customer.new("2", "Poul", "New Empire road, Khandala")
cust1.total_no_of_customers()
cust2.total_no_of_customers()
ローカル変数
ローカル変数はメソッドで定義された変数であり、メソッド外では定義できない.ローカル変数は小文字またはアンダースコアで指定されます.冒頭の.
上記の方法のid,name,addrのように
クラス内のメソッド
Javaを勉強したことがあるなら、プライベート(private)とパブリック(public)に慣れていないに違いありません.
同様にRubyにもprivateとpublicがあり、メソッド定義がクラス定義外の場合、このメソッドはデフォルトでprivateとしてマークされ、クラス定義ではデフォルトでpublicとマークされます.
#!/usr/bin/ruby # class_fun.rb
class Class_fun # Class_fun
def fun1
puts "This is the first test for class."
end
def fun2
puts "This is the second test for class."
end #
end
test1 = Class_fun.new
test2 = Class_fun.new # Class_fun
test1.fun1 #
test2.fun2
コードブロック
ブロックは大量のコードから構成されています.
コードは括弧doに含まれています...end内;ブロックはメソッド呼び出しの後にのみ続くことができます.例えば、あなたのコードブロックはblockと呼ばれます.test、blockを定義する必要があります.test同じ名前のメソッドでコードブロックを呼び出す
例:
#!/usr/bin/ruby
def block_test
puts "You are in the method"
yield #
puts "You are again back to the method"
yield #
end
block_test {puts "You are in the block"}
結果:
#!/usr/bin/ruby # be_and_in.rb
BEGIN {
#BEGIN
puts "BEGIN code block."
}
END {
#END
puts "END code block."
}
puts "MAIN code."
結果:
演算子
1.Rubyの多くの演算子は他の言語と同じである(例えば、基本的な+、-、*、/算術演算、ビット演算や論理演算など)が一部異なるので、以下ではRubyの一部の演算子について操作実験を行う.
2.比較演算子eql?:元のパラメータが受信したパラメータと同じタイプと値を持つ場合はtrueを返します.
例:
5.eql?(5.0) false
#equal?: id, true。
3.並列割付
例:
a,b,c = 10,20,30
:
a = 10, b = 20, c = 30
4.変数交換
a,b = b,a
# a b ,
5.三元演算子
a>b ? c=b : c=a
# a b b c, a c
6.範囲演算子
Rubyには2つの範囲演算子があり、それぞれ..と...
..開始点から終了点までの範囲(開始点と終了点を含む)を作成します.
...:開始点から終了点までの範囲を作成することを示します(開始点は含まれますが、終了点は含まれません).
例:
1..10
# 1 10
1…10
# 1 9
7.defined?演算子
defined? 演算子は、伝達されたパラメータが定義されているかどうかを呼び出し、式が定義されていない場合はnilを返し、定義されている場合はパラメータ記述を返します.
例:
#!/usr/bin/ruby # defined.rb
a=100
puts “a is defined?”,defined? a
puts “test is defined?”,defined? test
:
$ ruby defined.rb
a is defined?
local-variable
test is defined?
8.点演算子と二重コロン演算子
Rubyでは、クラスとメソッドを定数として使用できます.演算子:モジュール名と2つのコロンを使用して定数を参照できます.二重コロン演算子を使用すると、クラスまたはモジュール内の定数、インスタンスメソッド、およびクラスメソッドを定義できます.クラスまたはモジュール外の任意の場所からアクセスできます.
例:
#!/usr/bin/ruby
CONST = ' out there' #
class Inside_one
CONST = proc {' in there'}
def where_is_my_CONST
::CONST + ' inside one' #
end
end
class Inside_two
CONST = ' inside two'
def where_is_my_CONST
CONST
end
end
puts Inside_one.new.where_is_my_CONST
puts Inside_two.new.where_is_my_CONST
puts Object::CONST + Inside_two::CONST
puts Inside_two::CONST + CONST
puts Inside_one::CONST
puts Inside_one::CONST.call + Inside_two::CONST
接頭辞式が使用されていない場合、デフォルトではメインObjectクラスが使用されます.Procは,ブロックとそのcontext(局所変数の役割ドメインおよびスタックフレームワーク)をオブジェクト化処理した後に得られるプロセスオブジェクトである.