2011-12-05 7 views
0
  1. MyClass::empty().empty
    私はサイドのMyClassに空のメソッドを実装する必要がありますか?その中に何を書きますか?これらのRubyの概念の実装方法は?

  2. 次のように、このような呼び出しがどのように機能するかはわかりません:x = MyClass::empty().add("a").add("b")
    空であれば単にこれを呼び出すのでしょうか?

+0

'MyClass :: empty()。empty'は何を返しますか?なぜ単に 'MyClass :: empty()'だけではないのですか? – Reactormonk

+0

私はちょうどRubyを学んでいて、Rubyクラスを取ったときの例をいくつか見てきました。 MyClass :: empty()。emptyはtrueまたはfalseを返します。なぜ空ではなく.emptyなのか分かりませんが、そのメソッドが何かを返すかどうか、あるいはそのプロパティにアクセスしているかどうかという問題ではありませんか? – antonpug

+0

どのようなタイプの空()戻りますか? –

答えて

2

あなたはその中に何を書きますか?あなたは何をしたいのですか?

emptyという名前のクラスメソッドがあり、(a)パラメータを取らなかったか、(b)それらをデフォルトにしたemptyメソッドを持つものが返されます。

class MyClass 
    def self.empty 
    return WithEmpty.new # Or existing WithEmpty 
    end 
end 

またadd方法を持っている何かを返す必要があり、それ自体を返します。

class WithEmpty 
    def initialize 
    @a_list = [] 
    end 

    def add x 
    @a_list << x 
    self 
    end 

    def empty 
    @a_list.empty? 
    end 
end 

あなたがしようとしていることを説明した方が簡単/迅速になります。すぐには分かりません。

pry(main)> MyClass::empty() 
=> #<WithEmpty:0xa01a090 @a_list=[]> 
pry(main)> MyClass::empty().empty 
=> true 
pry(main)> MyClass::empty.empty 
=> true 
pry(main)> MyClass::empty.add("hi").add("bye") 
=> #<WithEmpty:0x9fc8d1c @a_list=["hi", "bye"]> 

あなたはMyClassのいずれかでそれを保存しない限り、(不完全メソッドは、クラス、インスタンスではなく、方法であるため、)、またはあなたがリターンを保存する今、あなたは、「内部」クラスのリストを取得する即時方法がありませんチェーンメソッドの最後の束からの値。

インスタンスを保存すると、MyClassにはどのようなことが起こりますか?繰り返しますが、達成する方法に焦点を当てるのではなく、実際に達成しようとしていることを定義する必要があると考えることはできません。目標は何ですか?


まず、配列の「追加」メソッドはありません。方法であなたが混合しているクラスとインスタンスメソッド:

class MyClass 
    def self.empty 
    return MyClass.new 
    end 

    def initialize 
    @arr = [] 
    end 

    def empty 
    @arr.empty? 
    end 

    def add x 
    @arr << x 
    self 
    end 
end 

その後:

pry(main)> MyClass.empty 
=> #<MyClass:0x9aea390 @arr=[]> 
pry(main)> MyClass.empty.add("ohai").add("kthxbai") 
=> #<MyClass:0x99f505c @arr=["ohai", "kthxbai"]> 

しかし、再び、あなたが記述しているあなたは、このような何かを意味しない限り、まだ、意味がありません私は官能的ではない。どのようにアレイにアクセスしたいですか? MyClassのポイントは何ですか?なぜ配列を使用しないのですか? MyClassの目的は、コンテキストなしで、何を示してきたことは多くの意味がありませんので、それを実装するための合理的な方法は、困難であるあなたに言って、ある何のための任意のガイドラインなし

pry(main)> a = [] 
=> [] 
pry(main)> a.empty? 
=> true 
pry(main)> a << "ohai" << "kthxbai" 
=> ["ohai", "kthxbai"] 
pry(main)> 
pry(main)> a.empty? 
=> false 

+0

1. WithEmptyとは何ですか?私はそれが空であるかどうかをチェックしたい配列を持っていますが、それをチェックするとは思わないでしょうか?ここで私がしようとしているのは、配列に項目を追加することです。私は何年か前からいくつかの古いクラスの素材を次のようにしています。何らかの理由で:: empty()。add(---)。add(---)。add(---) – antonpug

+0

空の配列をチェックするには、空の配列を空にします。更新を参照してください。 –

+0

はい。実際にRubyを学ぼうとしている "目標"はありません。私がクラスを受講した時から、本当に古いクラスのいくつかの例に続いて。 – antonpug

関連する問題