質問: Sample.new sam.method_two ``` とあったとすると、1が出てきて欲しいですがこれの出力は0となります このような感じで値を参照したいとき、どのようにすればよいでしょうか クラス変数やインスタンス変数にしてみたりしましたがうまくできません。 クラスの中ではなく、メソッドの中で作成した変数を別のメソッドから参照する形でも大丈夫です。 書いているコードのクラスの中にはメソッドが5つあり、入力された値によって条件分岐をしています。 入力はクラスの外で受取って、一番上で定めた(上じゃなくてもよい)メソッドと一つ下のメソッドで条件分岐。 このコードに当てはめて言うと`def method_one(num)` `def method_two(num)`となっているので、`sam.method_one(受けた値)` `sam.method_two(受けた値)`となっています。 method_twoを実行すると、twoの結果をthreeで使い、さらにその結果をfourで使い、fiveが実行される時にoneの結果と合わせて条件分岐をしています。 わがまま言うと、クラス設計やスコープ?がよく理解できていないのでしょうが、クラスの外で定めた変数をクラスの中で使えるようにする。もしくはクラスの中で定めた変数をクラスの外からアクセスする。といったことも行いたいのですが、出来ないのでしょうか よろしくお願い致します。
回答: やりたいことは、これでよろしかったでしょうか? class Sample def initialize(num=0) @num = num end def method_one @num += 1 end def method_two puts @num end end sam = Sample.new sam.method_one => 1 sam.method_one => 2 sam.method_one => 3 sam.method_two => 3 参考:(参考というか、そのままです^^; ruby カウントアップ で検索しました。) http://melborne.github.io/2014/04/01/ruby-may-lie/ たのしいRuby第5版の134ページにもお探しの情報あります。 間違っていたらごめんなさい。失礼します。