ルビー学習ノート

5577 ワード

*Rubyでは、クラスは閉じられません.つまり、現在のクラスにメソッドを追加または再定義できることを意味します.書き方はこの類名を書いて、そのまま書き方です.
*変数、インスタンス変数、クラス変数、さらには「定数」は、オブジェクト参照のみです.オブジェクトは参照されますが、オブジェクト自体ではありません.したがって、動的に変更され、別の異なるタイプのオブジェクトを参照することもできます.
*Rubyは、変数がコードとして使用されていることを誰もが知っているように、いくつかの約束をしなければなりません.以下に、いくつかの命名規則を示します.
  • ローカル変数とメソッドは、小文字で始まる
  • です.
  • メソッド名は、小文字で始まる
  • です.
  • グローバル変数は$で始まる
  • インスタンス変数は、@で始まる.オブジェクト内の変数です.Javaでは「プロパティ」
  • と呼ばれています
  • クラス変数は2つの@で始まる.JavaのStatic属性に対応しているはずです.
  • 定数は1つの大文字で始まるが、常にすべての大文字
  • が指定される.
  • クラスとモジュールは、大文字で始まる
  • です.
    *可変パラメータの方法:def initialize(s 1,s 2,s 3,*others)
    *パラメータにデフォルト値を設定:def initialize(hgt=1、wdth=1)
    $クラス変数とクラスメソッド
    *新しいインスタンスオブジェクトの作成方法:BankAccount.new()は、実はクラスメソッドです.クラスメソッドを書くときは、ファイルにクラス名を書きます.
    *継承:class Square$メソッドアクセス制御
    *private,protected,publicの3つが制御できます.Publicはすべてのメソッドのデフォルト設定です.
    *Privateキーから定義されるすべてのメソッドは、コードに別のアクセス制御キーが表示されるまでプライベートです.
    *デフォルトでは、Rubyでは、属性accessorとmutatorが指定されていない限り、インスタンスとクラス変数はプライベートです(def name=)
    $マルチ継承
    *Rubyは単一継承をサポートしていますが、mixin、つまりマルチ継承の特徴も提供しています.(この点はScalaと同じ)mixinは「モジュール」タイプです.
    *モジュールはメソッドと定数をグループ化する方法です.クラスと似ていますが、モジュールにはインスタンスがなく、サブクラスがありません.
    *モジュールの利点は、式にアクセスする際に、インスタンスの乱れによる悩みがないことです.
    *定義時にclassの代わりにmoduleを使用
    *呼び出し:クラスメソッドの呼び出しと同様のフラグを使用する必要があります.モジュールメソッドを呼び出します:[モジュールクラス名.メソッド名]、モジュール定数を呼び出します:[モジュール名::定数名]
    *モジュールの使用:あるクラスでinclude[モジュール名]を使用してmixinというモジュールを使用します.このクラスのインスタンスには、モジュールで定義された定数とメソッドがあります.
    $制御フロー
    *制御フローコマンド:条件(if/else)、case文、ループ文(do,while,for)、javaのような例外処理能力を含む
    *例外処理:Javaの「try...catch...finally」を「begin...rescue...ensure」文に変更
    *例外を放出する場合はraiseメソッドを使用します.Stringのパラメータを持って、異常情報を表示することができます.
    $数字、文字列、その他
    *文字列には、一重引用符の内容がそのまま表示されますが、「」の内容は、があれば翻訳されます.
    *文字列に直接式を使用できます.構文は次のとおりです.
    "try to add #{2 + 2}"

    try to add 4が表示されます
    *Rubyにはcharタイプはなく、charは小さな文字列です
    $正則
    *一致オペレータ("=~")を使用して、他の文字列を一致または検索できます.if golfer=~/Tiger|Phil/...
    *正則の書き方:/.../
    $範囲(range)
    *範囲は値のシーケンスです.
    *には<=>というオペレータがあります.左のオペランドを右のオペランドと比較します.整数4で実行されるsuccメソッド(4.succ)は5を返します.
    *Rangeクラスのnewメソッドまたは"."をクリックしてください.
    *デフォルトの範囲は、最後の要素が含まれます.最後の1つを含めなければ、newの時にRangeを使用することができる.new(「A」,「Z」,true)または(「A」...「Z」)は、最後の要素を除去する.
    *範囲は、kilobytes=(1...10)などのジェネレータ(generator)として使用できます.その後、範囲内の各メソッドでは、範囲内の各要素を巡回できます.
     
    $データ構造:
    *配列:[]と、で区切られた個々のオブジェクト.例えば、presidents=["john","richard","george"]
    *二重引用符のカンマは、次のような特殊なフラグで消去できます.
    presidents= %w[ John Richard Gerald Ronald George William]

    *注意:Rubyでは、「配列」は、異なる性質のオブジェクト参照からなる集合であってもよい.使用方法およびアクセス方法は次のとおりです.
    order_date=Date.today()
    
    shirt_information=[14.5,"Long",32,order_date]
    
    
    
    irb(main):003:0> shirt_information[2]
    
    => 32
    
    irb(main):004:0> shirt_information.at(2)
    
    => 32

    負のインデックスを使用して、配列内の要素を参照することもできます.末尾から数えることを表す.
    *配列は+-×を選択します.
    *配列は、HashMapと同様の役割を果たすこともできます.
    holidays={"New Year" => Date.parse("2006-01-02") , "MLB" => Date.parse("2006-01-16")}

    "New Year"=> Date.parse(...)の形式はK-Vペアです.
     
    $コードブロック、反復子、プロシージャオブジェクト
    *コードブロックもオブジェクトです.Javaの匿名関数とは,内部クラスやコールバック関数の概念があまり違わない.
    *Rubyコードブロックの構文は、Rubyコードを{}間またはdo/endコマンド間に置くことです.
    *これらのコードブロックを使用して、コードのセットとしてメソッドに渡します.まず、次の形式の簡単なメソッドを定義します.
    def someMethod
    
      yield
    
    end

    ここで、「yield」は制御をコードブロックに渡し、コードブロックはこの方法に適用される.
    someMethod {puts "hello world"}

    この方法は一般的に反復子(iterator)と一緒に使用される.例えば、配列については、barnYard.each{|animal| animal.talk}
    ここで、|記号は、受信するオブジェクト参照を定義するために使用されます.反復子とコードブロックは、簡単なことをすることができます.
    irb(main):001:0> 3.times {puts "Ruby is cool!"}
    
    Ruby is cool!
    
    Ruby is cool!
    
    Ruby is cool!

    Integerクラスは反復子(timesメソッド)も提供している.
    *コードブロックは変数に割り当てられます.このようなコードブロックは、実際にはProcクラスのインスタンスである.(どのように使うかについては、読めませんでした)