ルビーは学びながら覚える

6411 ワード

ルビーは学びながら覚える
この主な説明クラス
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同じ名前のメソッドでコードブロックを呼び出す
  • yield文
  • メソッドの内部では、yieldの役割は占有であり、yieldが実行されるとコードブロックの内容が実行される.|x|はコードブロックで使用され、受け入れるために使用されます.
    例:
    #!/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"}
    

    結果:
  • BEGINおよびendブロック
  • BEGINとENDブロックは、それぞれ、プログラムがロードされて実行され、プログラムが終了したときに実行されるコードブロックを定義する.個人的にはこれをライフサイクルと見なすことができます
    #!/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(局所変数の役割ドメインおよびスタックフレームワーク)をオブジェクト化処理した後に得られるプロセスオブジェクトである.