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

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

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

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

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

Q&A

1回答

1535閲覧

Ruby initializeメソッドの変数を外部から参照できない

kenny_sayama

総合スコア1036

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

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

0グッド

0クリップ

投稿2019/01/07 12:32

環境

Ruby 2.5
Rails 5.1

やりたいこと

以下のように独自に定義したクラスがあります。

rb

1module A 2 class B 3 attr_reader :hoge1, :hoge2 4 5 def initialize(hoge1, hoge2) 6 @hoge1 = hoge1 7 @hoge2 = hoge2 8 end 9 10 def run 11 self.new("犬", "猫") 12 end 13 end 14end

さらに別にコントローラーを定義しています。

hoges_controller.rbとします。

rb

1class HogesController < ApplicationController 2 def new 3 hoges = A::B.new 4 end 5end

上記まではいいのですが、

変数hogesから値を参照出来ず困っています。
binding.pryでhogesを展開すると

pry> hoges => @hoge1 = "犬" @hoge2 = "猫"

のようにデータが入っているのですが、

pry> hoges.hoge1

などで取り出しが出来ないです。

こちら助言いただけますでしょうか

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

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

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

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

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

guest

回答1

0

hogesはローカル変数なので、そのメソッド外からは参照できません。
メソッド外からアクセスしたいのなら、目的に応じて、インスタンス変数、クラス変数、グローバル変数のどれかにします。

#追記

Ruby

1module A 2 class B 3 attr_reader :hoge1, :hoge2 4 5 def initialize(hoge1, hoge2) 6 @hoge1 = hoge1 7 @hoge2 = hoge2 8 end 9 10 def run 11 self.new("犬", "猫") 12 end 13 end 14end 15 16class Foo 17 def new 18 hoges = A::B.new("A","B") 19 p hoges 20 p hoges.hoge1 21 p hoges.hoge2 22 end 23end 24 25Foo.new.new

で、ちゃんと表示されます。

投稿2019/01/07 12:42

編集2019/01/08 01:43
otn

総合スコア84529

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

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

kenny_sayama

2019/01/08 01:21

失礼いたしました。newメソッド内で値が取り出せればいいのですが、newメソッド内でもhoges.hoge1などで値が取り出せないという状態です
otn

2019/01/08 01:41

> newメソッド内でもhoges.hoge1などで値が取り出せないという状態です それは何かの勘違いですね。 追記しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問