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

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

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

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

Q&A

解決済

3回答

405閲覧

[Ruby]定数にファイルから読み込んできた値を配列として格納したいが、いい書き方がわからない

aiai8976

総合スコア112

Ruby

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

0グッド

0クリップ

投稿2020/09/10 09:16

編集2020/09/10 09:16

前提・実現したいこと

Ruby初心者です。
クラスでファイルから一行ずつ読み込んできた値を配列として定数で持っておきたいのですが、今のコードだと定数を一回定義した後にpushする形になっているので変数のようになってしまっています。
どのように書くのがいいのでしょうか。
ご教授お願いします。

該当のソースコード

ruby

1class Hoge 2 SAMPLE = [] 3 File.foreach('sample.txt') do |line| 4 SAMPLE.push(line) 5 end 6end

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

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

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

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

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

otn

2020/09/10 09:25

> 変数のようになってしまっています。 これは具体的に何を言いたのでしょうか?
aiai8976

2020/09/10 10:58

定数なのに再代入してしまっている点です。
otn

2020/09/10 11:52

再代入してませんよ。
guest

回答3

0

freeze の利用も検討してみるとよいかもしれません。

参考情報

  • Rubyで定数を扱う場合はfreezeするべき

https://qiita.com/yukiyan/items/39f945c55b6dc5e11ed7

投稿2020/09/10 22:48

katoy

総合スコア22324

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

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

0

もっとコンパクトに書きたいと言うことなら、

Ruby

1class Hoge 2 SAMPLE = IO.readlines('sample.txt') 3 ~~ 4end

投稿2020/09/10 12:16

otn

総合スコア85949

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

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

0

ベストアンサー

class Hoge SAMPLE = set_sample_txt def set_sample_txt File.foreach('sample.txt').map(&:to_s) end end

こんな形でsetメソッドを作りますかね〜
pushの部分はmapを使います。

投稿2020/09/10 09:34

necocoa

総合スコア209

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

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

aiai8976

2020/09/10 10:58

``` undefined local variable or method `set_sample_txt' ``` というエラーが出てしまいます
necocoa

2020/09/10 11:10

変数代入できませんでしたね。。 class Hoge SAMPLE = File.foreach('sample.txt').map(&:to_s) end こちらでよかったかも
otn

2020/09/10 23:49

文字列に対してto_sするのは駄目ではないですが変ですね。
necocoa

2020/09/11 01:01

配列にしたいだけだったので、otnさんの IO.readlines('sample.txt') がよさそうですね!アドバイスありがとうございます!
otn

2020/09/11 01:03

配列にするのはto_aです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問