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

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

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

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

Q&A

解決済

2回答

507閲覧

クラス外で定義された変数を、クラス内で使う方法はありますか?

dentiste

総合スコア5

Ruby

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

1グッド

1クリップ

投稿2020/06/24 10:33

編集2020/06/24 11:23

Rubyにおいて、クラス外で定義された変数を、クラス内で使う方法は

・グローバル変数($)を使う
・定数化する(大文字にする)

これ以外に何かありますか?

値がたくさん入っているような変数を別ファイルに用意して、それをクラス内で使いたいです。
定数化したくない理由としては、後から値を追加していく予定だからです。

それとも定数化したとしても手動で値を追加していくことは悪くないのでしょうか。

[a.rb] #支出を格納。毎日手動で追加していく expense = {  : 20200624 => 500 20200625 => 1000 20200626 => 0 :
[b.rb] require "./a" class def #ここでa.rbの中のexpenseの値を参照して、足したり割ったりする end end

分かりづらくてすみません。
支出を管理するプログラムを作っています。プログラムで値を書き換えたりということはしません。
ただ、支出の値を毎日手動で追加していきます。手動とはいえ毎日expense変数の中身が変わっていくので、定数化してしまうのは良くないのかと思ったのですが、このような場合は定数化しても良いのでしょうか。
グローバル変数を使わずにクラス内でexpense変数の中の値を参照したいと思っています。

DrqYuto👍を押しています

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

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

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

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

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

takasima20

2020/06/24 10:42 編集

クラス内で使う特定の定数を別ファイルにしたいってこと? で、目的は不必要にソース修正をしたくない、と。C言語でいうヘッダーファイル的なことをしたいってことかな。
maisumakun

2020/06/24 10:45

「後から値を追加していく」のはプログラムで動的に行う、ということで間違いないですか?
guest

回答2

0

a.rbをymlにして読み取る形はどうでしょうか?

a.yml

yaml

1:expense: 2 20200624: 500 3 20200625: 1000 4 20200626: 0

b.rb

ruby

1require 'yaml' 2class B 3 def initialize 4 @data = YAML.load "a.yml" 5 end 6 def print 7 @data[:expense].each{|k,v| puts "#{k}: #{v}" 8 end 9end

投稿2020/06/24 11:43

asm

総合スコア15147

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

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

dentiste

2020/06/24 11:54

そんなやり方も出来るのですね!ありがとうございます!
guest

0

ベストアンサー

手動とはいえ毎日expense変数の中身が変わっていくので、定数化してしまうのは良くないのかと思ったのですが、このような場合は定数化しても良いのでしょうか。

はい、プログラム実行中に書き換わらないのが定数ですので、プログラム外で書き換える分には無関係です。

投稿2020/06/24 11:28

maisumakun

総合スコア145208

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

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

dentiste

2020/06/24 11:39

そうなのですね!ご回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問