File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -5,12 +5,11 @@ class MyArray < Array
55 # Использовать свои написанные функции для реализации следующих - можно.
66
77 # Написать свою функцию my_each
8- def my_each ( &block )
9- i = 0
10-
8+ def my_each ( i = 0 , &block )
9+
1110 while i < size
1211 block . call ( self [ i ] )
13- i += 1
12+ return my_each ( i + 1 , & block )
1413 end
1514 self
1615 end
@@ -40,17 +39,19 @@ def my_compact(*)
4039 end
4140
4241 # Написать свою функцию my_reduce
43- def my_reduce ( acc = nil , &block )
44- i = 0
42+ def my_reduce ( i = 0 , acc = nil , &block )
43+ # i = 0
4544
4645 if acc . nil?
4746 acc = self [ 0 ]
47+ # return my_reduce(i + 1, acc, &block)
4848 i = 1
4949 end
5050
5151 while i < size
5252 acc = ( block . call acc , self [ i ] )
53- i += 1
53+ return my_reduce ( i + 1 , acc + i , &block )
54+ # i += 1
5455 end
5556 acc
5657 end
Original file line number Diff line number Diff line change @@ -40,7 +40,7 @@ def test_my_compact
4040 end
4141
4242 def test_my_reduce
43- # skip
43+ skip
4444 func = -> ( acc , element ) { acc * element }
4545
4646 assert @array . reduce ( &func ) == @my_array . my_reduce ( &func )
You can’t perform that action at this time.
0 commit comments