質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

2回答

1762閲覧

Rubyでメソッドを跨いで変数を参照したい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2017/07/01 17:33

##クラス内で定めた変数をそのクラスにあるメソッドのどこからでも参照できるようにしたい
ruby2.4です

たとえば

class Sample num = 0 def method_one num += 1 end def method_two puts num end puts num end sam = 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の結果と合わせて条件分岐をしています。

わがまま言うと、クラス設計やスコープ?がよく理解できていないのでしょうが、クラスの外で定めた変数をクラスの中で使えるようにする。もしくはクラスの中で定めた変数をクラスの外からアクセスする。といったことも行いたいのですが、出来ないのでしょうか

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

クラス内で定めた変数をそのクラスにあるメソッドのどこからでも参照できるようにしたい

何をしたいのかによりますが、文字通りに答えると、インスタンス変数か、クラス変数を使うと出来ます。

クラス変数やインスタンス変数にしてみたりしましたがうまくできません。

まずは、クラスとインスタンス(オブジェクト)、インスタンス変数を理解するために、簡単なプログラムから始めると良いでしょう。
応用的なことを考えるのはそれからです。

投稿2017/07/01 17:59

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

やりたいことは、これでよろしかったでしょうか?

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ページにもお探しの情報あります。
間違っていたらごめんなさい。失礼します。

投稿2017/07/04 09:59

tuvalu

総合スコア136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/05 12:04

ご親切にありがとうございます。 呼び出した回数分値が増えていくのは初めて知りました。 参考書を購入したことがなかったのですが、購入してしっかり勉強します。 ありがとうございました。
tuvalu

2017/07/06 00:44

おおー、よかったです! 参考書の購入も必要ですが、ネットで探しだせるようになると強くなりますよ。 お互い頑張りましょう!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問