質問編集履歴

5

追記

2019/08/21 06:32

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -237,3 +237,207 @@
237
237
  となると思うのですがどこらへんの
238
238
 
239
239
  解釈から間違えているのでしょうか?
240
+
241
+
242
+
243
+ #質問1
244
+
245
+ ```ruby
246
+
247
+ text = "0123456789"
248
+
249
+ #配列に格納します。
250
+
251
+ a = text.chars
252
+
253
+
254
+
255
+ サンプル1
256
+
257
+ p a.each_slice(2).map(&:join)←サンプル2と同じ処理をするはずなのにエラーにならない
258
+
259
+
260
+
261
+ サンプル2
262
+
263
+ a.each_slice(2) do |v|
264
+
265
+ p v.map(&:join) ←これがなぜエラーになるかはわかった
266
+
267
+ end
268
+
269
+ ```
270
+
271
+ 回答でいただいた通り サンプル1と2ともに
272
+
273
+ ```ruby
274
+
275
+ ["0","1"].join
276
+
277
+ ["2","3"].join
278
+
279
+ ["4","5"].join
280
+
281
+ ```
282
+
283
+ といったかたちになると思うのですがなぜ
284
+
285
+ サンプル1(省略形)ではエラーにならないのでしょうか?
286
+
287
+
288
+
289
+ #質問2
290
+
291
+ ```ruby
292
+
293
+ a.each_slice(2) do |v|
294
+
295
+ p v.map(&:join) 
296
+
297
+ end
298
+
299
+ ```
300
+
301
+ これを正しく書くと以下のようになると
302
+
303
+ ```ruby
304
+
305
+
306
+
307
+ a.each_slice(2).map do |i|
308
+
309
+ i.join
310
+
311
+ end
312
+
313
+ ```
314
+
315
+ 教えてもらったのですが
316
+
317
+ この処理の解釈の仕方について合っているか教えてください。
318
+
319
+ ```ruby
320
+
321
+ ["0","1","2","3","4","5"・・・]
322
+
323
+ ```
324
+
325
+ といった配列が
326
+
327
+ ```ruby
328
+
329
+ each_slice
330
+
331
+ ```
332
+
333
+ によって
334
+
335
+ ```ruby
336
+
337
+ [["0","1"] ["2","3"] ["4","5"]・・・]
338
+
339
+ ```
340
+
341
+ といった配列になる
342
+
343
+ それをmapメソッドで
344
+
345
+ 配列の中の配列を取り出し
346
+
347
+ ```ruby
348
+
349
+ [["0","1"] ["2","3"] ["4","5"]・・・]
350
+
351
+
352
+
353
+ ["0","1"] ["2","3"] ["4","5"]
354
+
355
+ ```
356
+
357
+ そしてjoinメソッドを実行する。
358
+
359
+ ・・・なんか間違っているような気もするのですが
360
+
361
+ 合っていますか?
362
+
363
+
364
+
365
+ #質問3(一応)
366
+
367
+ ```ruby
368
+
369
+ a.each_slice(2).map do |i|
370
+
371
+ i.join
372
+
373
+ end
374
+
375
+ ```
376
+
377
+ 教えてもらったコードのなかの
378
+
379
+ mapメソッドはなぜ必要なのでしょうか?
380
+
381
+ ```ruby
382
+
383
+ each_sliceメソッド
384
+
385
+ ```
386
+
387
+
388
+
389
+ ```ruby
390
+
391
+ ["0","1","2","3","4"・・・]
392
+
393
+ ```
394
+
395
+ このような配列の中から
396
+
397
+ ```ruby
398
+
399
+ ["0","1"]["2","3"]["4","5"]
400
+
401
+ ```
402
+
403
+
404
+
405
+ このように指定した数だけまとめて処理できるとおもうのですが
406
+
407
+ ではmapメソッドはいらないことになってしまうんじゃないでしょうか?
408
+
409
+ ```ruby
410
+
411
+ a.each_slice(2).map do |i|
412
+
413
+ i.join
414
+
415
+ end
416
+
417
+ ```
418
+
419
+
420
+
421
+ ```ruby
422
+
423
+ a.each_slice(2) do |i|
424
+
425
+ i.join
426
+
427
+ end
428
+
429
+ ```
430
+
431
+
432
+
433
+ ```ruby
434
+
435
+ ["0","1"].join
436
+
437
+ ["2","3"].join
438
+
439
+ ["4","5"].join
440
+
441
+ ```
442
+
443
+ わからないのでお願いします。

4

訂正

2019/08/21 06:32

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -236,4 +236,4 @@
236
236
 
237
237
  となると思うのですがどこらへんの
238
238
 
239
- 解釈から間違えているのでしょうk
239
+ 解釈から間違えているのでしょう

3

追記

2019/08/21 02:30

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -112,6 +112,14 @@
112
112
 
113
113
  やっていることは同じだとおもうのですが
114
114
 
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
115
123
  下のほうのコードではエラーになってしまいます。
116
124
 
117
125
  なんでなんでしょうか?
@@ -151,3 +159,81 @@
151
159
  "89"
152
160
 
153
161
  ```
162
+
163
+
164
+
165
+ -------
166
+
167
+
168
+
169
+ ```ruby
170
+
171
+ text = "0123456789"
172
+
173
+ a = text.chars
174
+
175
+
176
+
177
+ a.each_slice(2) do |v|
178
+
179
+ p v
180
+
181
+ end
182
+
183
+
184
+
185
+ ```
186
+
187
+ 実行結果
188
+
189
+ ```cmd
190
+
191
+ ["0", "1"]
192
+
193
+ ["2", "3"]
194
+
195
+ ["4", "5"]
196
+
197
+ ["6", "7"]
198
+
199
+ ["8", "9"]
200
+
201
+ ```
202
+
203
+ ならば
204
+
205
+ ```ruby
206
+
207
+ text = "0123456789"
208
+
209
+ a = text.chars
210
+
211
+
212
+
213
+ a.each_slice(2) do |v|
214
+
215
+ p v.map(&:join)
216
+
217
+ end
218
+
219
+ ```
220
+
221
+ このコードは
222
+
223
+ ```ruby
224
+
225
+ p ["0", "1"].join
226
+
227
+ p ["2", "3"].join
228
+
229
+ p ["4", "5"].join
230
+
231
+ p ["6", "7"].join
232
+
233
+ p ["8", "9"].join
234
+
235
+ ```
236
+
237
+ となると思うのですがどこらへんの
238
+
239
+ 解釈から間違えているのでしょうk?

2

追記

2019/08/21 02:29

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -115,3 +115,39 @@
115
115
  下のほうのコードではエラーになってしまいます。
116
116
 
117
117
  なんでなんでしょうか?
118
+
119
+
120
+
121
+ **追記**
122
+
123
+ ```ruby
124
+
125
+ text = "0123456789"
126
+
127
+ a = text.chars
128
+
129
+
130
+
131
+ a.each_slice(2).map do |v|
132
+
133
+ p v.join
134
+
135
+ end
136
+
137
+ ```
138
+
139
+
140
+
141
+ ```cmd
142
+
143
+ "01"
144
+
145
+ "23"
146
+
147
+ "45"
148
+
149
+ "67"
150
+
151
+ "89"
152
+
153
+ ```

1

訂正

2019/08/20 15:04

投稿

kazuyakazuya
kazuyakazuya

スコア193

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,35 @@
83
83
 
84
84
 
85
85
  分からないので参考になるリンクまたは説明をお願いします。
86
+
87
+
88
+
89
+ **追記**
90
+
91
+ ```ruby
92
+
93
+ text = "0123456789"
94
+
95
+ a = text.chars
96
+
97
+ p a.each_slice(2).map(&:join)
98
+
99
+
100
+
101
+ a.each_slice(2) do |v|
102
+
103
+ v.map{ |i|
104
+
105
+ i.join
106
+
107
+ }
108
+
109
+ end
110
+
111
+ ```
112
+
113
+ やっていることは同じだとおもうのですが
114
+
115
+ 下のほうのコードではエラーになってしまいます。
116
+
117
+ なんでなんでしょうか?