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

質問編集履歴

5

追記

2019/08/21 06:32

投稿

kazuyakazuya
kazuyakazuya

スコア193

title CHANGED
File without changes
body CHANGED
@@ -117,4 +117,106 @@
117
117
  p ["8", "9"].join
118
118
  ```
119
119
  となると思うのですがどこらへんの
120
- 解釈から間違えているのでしょうか?
120
+ 解釈から間違えているのでしょうか?
121
+
122
+ #質問1
123
+ ```ruby
124
+ text = "0123456789"
125
+ #配列に格納します。
126
+ a = text.chars
127
+
128
+ サンプル1
129
+ p a.each_slice(2).map(&:join)←サンプル2と同じ処理をするはずなのにエラーにならない
130
+
131
+ サンプル2
132
+ a.each_slice(2) do |v|
133
+ p v.map(&:join) ←これがなぜエラーになるかはわかった
134
+ end
135
+ ```
136
+ 回答でいただいた通り サンプル1と2ともに
137
+ ```ruby
138
+ ["0","1"].join
139
+ ["2","3"].join
140
+ ["4","5"].join
141
+ ```
142
+ といったかたちになると思うのですがなぜ
143
+ サンプル1(省略形)ではエラーにならないのでしょうか?
144
+
145
+ #質問2
146
+ ```ruby
147
+ a.each_slice(2) do |v|
148
+ p v.map(&:join) 
149
+ end
150
+ ```
151
+ これを正しく書くと以下のようになると
152
+ ```ruby
153
+
154
+ a.each_slice(2).map do |i|
155
+ i.join
156
+ end
157
+ ```
158
+ 教えてもらったのですが
159
+ この処理の解釈の仕方について合っているか教えてください。
160
+ ```ruby
161
+ ["0","1","2","3","4","5"・・・]
162
+ ```
163
+ といった配列が
164
+ ```ruby
165
+ each_slice
166
+ ```
167
+ によって
168
+ ```ruby
169
+ [["0","1"] ["2","3"] ["4","5"]・・・]
170
+ ```
171
+ といった配列になる
172
+ それをmapメソッドで
173
+ 配列の中の配列を取り出し
174
+ ```ruby
175
+ [["0","1"] ["2","3"] ["4","5"]・・・]
176
+
177
+ ["0","1"] ["2","3"] ["4","5"]
178
+ ```
179
+ そしてjoinメソッドを実行する。
180
+ ・・・なんか間違っているような気もするのですが
181
+ 合っていますか?
182
+
183
+ #質問3(一応)
184
+ ```ruby
185
+ a.each_slice(2).map do |i|
186
+ i.join
187
+ end
188
+ ```
189
+ 教えてもらったコードのなかの
190
+ mapメソッドはなぜ必要なのでしょうか?
191
+ ```ruby
192
+ each_sliceメソッド
193
+ ```
194
+
195
+ ```ruby
196
+ ["0","1","2","3","4"・・・]
197
+ ```
198
+ このような配列の中から
199
+ ```ruby
200
+ ["0","1"]["2","3"]["4","5"]
201
+ ```
202
+
203
+ このように指定した数だけまとめて処理できるとおもうのですが
204
+ ではmapメソッドはいらないことになってしまうんじゃないでしょうか?
205
+ ```ruby
206
+ a.each_slice(2).map do |i|
207
+ i.join
208
+ end
209
+ ```
210
+
211
+ ```ruby
212
+ a.each_slice(2) do |i|
213
+ i.join
214
+ end
215
+ ```
216
+
217
+ ```ruby
218
+ ["0","1"].join
219
+ ["2","3"].join
220
+ ["4","5"].join
221
+ ```
222
+ わからないのでお願いします。

4

訂正

2019/08/21 06:32

投稿

kazuyakazuya
kazuyakazuya

スコア193

title CHANGED
File without changes
body CHANGED
@@ -117,4 +117,4 @@
117
117
  p ["8", "9"].join
118
118
  ```
119
119
  となると思うのですがどこらへんの
120
- 解釈から間違えているのでしょうk
120
+ 解釈から間違えているのでしょう

3

追記

2019/08/21 02:30

投稿

kazuyakazuya
kazuyakazuya

スコア193

title CHANGED
File without changes
body CHANGED
@@ -55,6 +55,10 @@
55
55
  end
56
56
  ```
57
57
  やっていることは同じだとおもうのですが
58
+
59
+
60
+
61
+
58
62
  下のほうのコードではエラーになってしまいます。
59
63
  なんでなんでしょうか?
60
64
 
@@ -74,4 +78,43 @@
74
78
  "45"
75
79
  "67"
76
80
  "89"
77
- ```
81
+ ```
82
+
83
+ -------
84
+
85
+ ```ruby
86
+ text = "0123456789"
87
+ a = text.chars
88
+
89
+ a.each_slice(2) do |v|
90
+ p v
91
+ end
92
+
93
+ ```
94
+ 実行結果
95
+ ```cmd
96
+ ["0", "1"]
97
+ ["2", "3"]
98
+ ["4", "5"]
99
+ ["6", "7"]
100
+ ["8", "9"]
101
+ ```
102
+ ならば
103
+ ```ruby
104
+ text = "0123456789"
105
+ a = text.chars
106
+
107
+ a.each_slice(2) do |v|
108
+ p v.map(&:join)
109
+ end
110
+ ```
111
+ このコードは
112
+ ```ruby
113
+ p ["0", "1"].join
114
+ p ["2", "3"].join
115
+ p ["4", "5"].join
116
+ p ["6", "7"].join
117
+ p ["8", "9"].join
118
+ ```
119
+ となると思うのですがどこらへんの
120
+ 解釈から間違えているのでしょうk?

2

追記

2019/08/21 02:29

投稿

kazuyakazuya
kazuyakazuya

スコア193

title CHANGED
File without changes
body CHANGED
@@ -56,4 +56,22 @@
56
56
  ```
57
57
  やっていることは同じだとおもうのですが
58
58
  下のほうのコードではエラーになってしまいます。
59
- なんでなんでしょうか?
59
+ なんでなんでしょうか?
60
+
61
+ **追記**
62
+ ```ruby
63
+ text = "0123456789"
64
+ a = text.chars
65
+
66
+ a.each_slice(2).map do |v|
67
+ p v.join
68
+ end
69
+ ```
70
+
71
+ ```cmd
72
+ "01"
73
+ "23"
74
+ "45"
75
+ "67"
76
+ "89"
77
+ ```

1

訂正

2019/08/20 15:04

投稿

kazuyakazuya
kazuyakazuya

スコア193

title CHANGED
File without changes
body CHANGED
@@ -40,4 +40,20 @@
40
40
  うまく言い表せないのですが
41
41
  つまり、each_sliceの省略形はどのように使えばいいのでしょうか?
42
42
 
43
- 分からないので参考になるリンクまたは説明をお願いします。
43
+ 分からないので参考になるリンクまたは説明をお願いします。
44
+
45
+ **追記**
46
+ ```ruby
47
+ text = "0123456789"
48
+ a = text.chars
49
+ p a.each_slice(2).map(&:join)
50
+
51
+ a.each_slice(2) do |v|
52
+ v.map{ |i|
53
+ i.join
54
+ }
55
+ end
56
+ ```
57
+ やっていることは同じだとおもうのですが
58
+ 下のほうのコードではエラーになってしまいます。
59
+ なんでなんでしょうか?