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

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

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

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

Q&A

解決済

1回答

778閲覧

Ruby 配列の各要素を変数扱いしたい ary[x_i , y_i]

t.s_k

総合スコア61

Ruby

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

0グッド

0クリップ

投稿2018/09/29 11:02

編集2018/09/29 11:04

配列の各要素を変数のように使いたいと思い、
timesメソッド内で定めたインスタンス変数@b_iを、timesメソッド外で利用しようとしました。
ここで出力したいのは**@f_(任意の数値)**なのですが、これはインスタンス変数ではないと気づきました。(下記)

そこで、配列の各要素を変数のように利用するにはどのような方法があるのでしょうか?

(実際に@f_0を出力しようとした結果**@f_0は定めてないためnil** が出力されました。インスタンス変数に定義したのは**@f_i**であり、@f_0には別途代入が必要)

n = gets.chomp.to_i d = [] n.times do |i| @b_i,@f_i = gets.chomp.split(" ").map(&:to_i) d[i] = [@b_i,@f_i] puts @f_0 end p d puts @f_0 p @f_0 #=> # 2 # 10 2 # # この行に変数 f_0 を出力したい # 78 9 # # この行に変数 f_0 を出力したい # [[10, 2], [78, 9]] # # この行に変数 f_0 を出力したい # 9 # @f_i (@f_iの戻り値) # nil # @f_0 = nil

timesメソッド外で利用する一例

# ary =[ [ [ [b_0 , f_0] , [b_1 , f_0] , [b_2 , f_2] . . . for f_i in .. do ... for b_i in .. do ... end end

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

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

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

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

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

guest

回答1

0

ベストアンサー

素朴な疑問なのですが、わざわざインスタンス変数を介さないといけない理由はありますでしょうか。そのまま配列を参照すれば、「動的な名前の変数を参照する」なんていう手間なことをせずに済みます。

ruby

1n = gets.chomp.to_i 2d = [] 3n.times do |i| 4 d[i] = gets.chomp.split(" ").map(&:to_i) 5end 6 7p d 8puts d[0][1]

投稿2018/09/29 11:11

maisumakun

総合スコア145123

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

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

t.s_k

2018/09/29 11:14

こんな簡単に参照できたのですね、、、迅速に回答してくださりありがとうございます。
maisumakun

2018/09/29 11:19

Rubyは「リフレクション」といって、プログラムからプログラムを制御する機能が充実しています(Railsなどはそういう機能をフル活用しています)…が、回りくどいコードとなって書きにくい・読みにくいので、普通に書いて問題なく書けるならそのほうがいいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問