teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

社員番号が変だった

2016/12/21 22:04

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -10,9 +10,9 @@
10
10
 
11
11
  eachの中で`answer_array.push(num_array)`は三回呼ばれることになりますが、この間、num_arrayが指し示す物は変更されていませんので、**同じ配列に複数の番号を付けただけになってしまいます**。太郎君が社員番号0番と社員番号1番と社員番号2番の三つの番号で呼ばれるようになったような物です。
12
12
 
13
- そして、`num_array.clear`でnum_arrayが指すもの自体を空にしています。太郎君がおなかをすかしたような物です。そうなると、社員番号1番も空腹ですし、社員番号2番も空腹ですし、社員番号3番も空腹です。みんな実体は太郎君なんですから。
13
+ そして、`num_array.clear`でnum_arrayが指すもの自体を空にしています。太郎君がおなかをすかしたような物です。そうなると、社員番号0番も空腹ですし、社員番号1番も空腹ですし、社員番号2番も空腹です。みんな実体は太郎君なんですから。
14
14
 
15
- 解決方法はeachのループ内で配列を作ることです。echaの中に`num_array = Array.new`を入れれば、その度に新たに配列が作られますので、**それぞれが指す先は別の配列になります**。ループの度に新入社員が入ってきて、そいつを毎回太郎君と呼んでいるような物です。ですが、これらの太郎君は毎回別の人物ですので、社員番号1と社員番号2と社員番号3はそれぞれ別人になります。(実際に修正したコードはNeightさんの回答を参考にしてください。)
15
+ 解決方法はeachのループ内で配列を作ることです。echaの中に`num_array = Array.new`を入れれば、その度に新たに配列が作られますので、**それぞれが指す先は別の配列になります**。ループの度に新入社員が入ってきて、そいつを毎回太郎君と呼んでいるような物です。ですが、これらの太郎君は毎回別の人物ですので、社員番号0番と社員番号1番と社員番号2番はそれぞれ別人になります。(実際に修正したコードはNeightさんの回答を参考にしてください。)
16
16
 
17
17
  ---
18
18
 

1

誤字の修正

2016/12/21 22:04

投稿

raccy
raccy

スコア21784

answer CHANGED
@@ -1,7 +1,7 @@
1
1
  Rubyの配列はオブジェクトの入れ物では無く、**オブジェクトに対する参照の入れ物**です。別の言い方をすると**番号で名前を付けている**とも言えます。これは変数についても同じです。
2
2
 
3
3
  ```Ruby
4
- a = Arrayn.new # 新しく配列を作り、それを今から a と呼ぶ。
4
+ a = Array.new # 新しく配列を作り、それを今から a と呼ぶ。
5
5
  a[0] = "hoge" # aと言う物(先ほど作った配列のこと)のインデックス番号0は、"hoge"という文字列を指すことにする。
6
6
  a.push("fuga") # aと言う物(先ほど作った配列のこと)の最後に枠を作って(この場合はインデックス番号1)、"fuga"という文字列を指すことにする。
7
7
  ```