質問編集履歴
4
本文修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
RubyのCSV::Tableクラスで作成したテーブルのカラムに値100を代入する場合、`table[:id][0] = 100`は代入不可ですが、`table[0][0] = 100`では値が代入出来るのはなぜでしょうか。
|
1
|
+
RubyのCSV::Tableクラスで作成したテーブルのカラムに値100を代入する場合、`table[:id][0] = 100`は値の代入不可ですが、`table[0][0] = 100`では値が代入出来るのはなぜでしょうか。
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
代入できることを疑問に思った理由は、[instance method CSV::Table#[] (Ruby 2.4.0)](http://rurema.clear-code.com/2.4.0/method/CSV=3a=3aTable/i/=5b=5d.html)で以下の文を見つけたためです。
|
5
|
+
値が代入できることを疑問に思った理由は、[instance method CSV::Table#[] (Ruby 2.4.0)](http://rurema.clear-code.com/2.4.0/method/CSV=3a=3aTable/i/=5b=5d.html)で以下の文を見つけたためです。
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
> ミックスモードでは、このメソッドは引数に行番号を指定すれば行単位で動作し、ヘッダの名前を指定すれば列単位で動作します。
|
10
6
|
|
11
7
|
|
12
8
|
|
@@ -14,21 +10,11 @@
|
|
14
10
|
|
15
11
|
|
16
12
|
|
17
|
-
|
18
|
-
|
19
|
-
上記の引用の内容を読んだ時、以下のようなCSVファイルが合った場合、
|
20
|
-
|
21
|
-
* 行番号を指定とは例えば `table[0][0]`
|
22
|
-
|
23
|
-
* ヘッダの名前を指定とは例えば `table[:id][0]`
|
13
|
+
上記の引用の内容を読み、例えば、後述するCSVファイルが合った場合、`table[0][0] = 100`も`table[:id][0] = 100`のどちらを実行してもtableの値は変わらないはずではないかと考えたのですが、以下のように実行した場合、`table[0][0] = 100`を実行すると値が変わってしまいます。しかし、`table[:id][0] = 100`は値に変化はありません。
|
24
14
|
|
25
15
|
|
26
16
|
|
27
|
-
のことで合っているとしたら、どちらも`table[0][0] = 100`も`table[:id][0] = 100`のどちらを実行してもtableの値は変わらないはずではないかと考えたのですが、
|
28
|
-
|
29
|
-
|
17
|
+
## 用意したCSVファイル
|
30
|
-
|
31
|
-
|
32
18
|
|
33
19
|
```csv
|
34
20
|
|
3
本文順序修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
RubyのCSV::Tableクラスで作成したカラム`table[0][0]`に値が代入
|
1
|
+
RubyのCSV::Tableクラスで作成したカラム`table[0][0]`に値が代入され値が変わる理由
|
test
CHANGED
@@ -14,27 +14,19 @@
|
|
14
14
|
|
15
15
|
|
16
16
|
|
17
|
-
* 行番号を指定とは `table[0][0]`
|
18
17
|
|
18
|
+
|
19
|
+
上記の引用の内容を読んだ時、以下のようなCSVファイルが合った場合、
|
20
|
+
|
21
|
+
* 行番号を指定とは例えば `table[0][0]`
|
22
|
+
|
19
|
-
* ヘッダの名前を指定とは `table[:id][0]`
|
23
|
+
* ヘッダの名前を指定とは例えば `table[:id][0]`
|
20
24
|
|
21
25
|
|
22
26
|
|
23
|
-
のことで合っているとしたら、`table[0][0] = 100`
|
27
|
+
のことで合っているとしたら、どちらも`table[0][0] = 100`も`table[:id][0] = 100`のどちらを実行してもtableの値は変わらないはずではないかと考えたのですが、
|
24
28
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
----
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
以下のように
|
29
|
+
以下のように実行した場合、`table[0][0] = 100`を実行すると値が変わってしまいます。
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
CSVファイル
|
38
30
|
|
39
31
|
|
40
32
|
|
@@ -51,6 +43,16 @@
|
|
51
43
|
2,hanzoo,35
|
52
44
|
|
53
45
|
```
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
----
|
54
56
|
|
55
57
|
|
56
58
|
|
2
追記の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -136,8 +136,6 @@
|
|
136
136
|
|
137
137
|
## 追加補足
|
138
138
|
|
139
|
+
URLで申し訳ないのですが、元は下記URLの疑問の延長となっています。
|
139
140
|
|
140
|
-
|
141
|
-
https://teratail.com/questions/74846
|
141
|
+
[Ruby - RubyのCSV::Tableクラスで作成したカラム`table[:id][0]`に値が代入できないのはなぜですか(74846)|teratail](https://teratail.com/questions/74846)
|
142
|
-
|
143
|
-
URLで申し訳ないのですが、元は上記URLの疑問の延長です。
|
1
追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -131,3 +131,13 @@
|
|
131
131
|
=> nil
|
132
132
|
|
133
133
|
```
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
## 追加補足
|
138
|
+
|
139
|
+
|
140
|
+
|
141
|
+
https://teratail.com/questions/74846
|
142
|
+
|
143
|
+
URLで申し訳ないのですが、元は上記URLの疑問の延長です。
|