-
Notifications
You must be signed in to change notification settings - Fork 0
/
ruby-blocks.rb
133 lines (90 loc) · 1.84 KB
/
ruby-blocks.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# RUBY BLOCKS AND ITERABLES
#What is iteration - repeating process over and over until condition is met
# While - start point and end point , condition starts and true and eventually becomes false
num = 1
while num <=10
p num
end
#Methods
# - many methods for iteration
# - methods can take an anonymous function, which is a BLOCK
# - Blocks can be defined 2 ways:
# - keywords do and end
# - {}
# TIMES
5.times do
p 'hello world'
end
5.times { p 'hello world'} #one liner only uses {}
num = 10
num.times do
p 'hello foxtrot'
end
#-------------------
# EACH - works on a list of items - aka an array.
nums = [3, 4, 5, 6]
nums.each do |value| #we can pass a parameter using the pipes!
p value
end
nums.each do |value|
p value * 3
end
p nums
# ---------------------
#RANGES
# list of values = > give start and end points separated by 2 dots. It fills in the content
1..10
a_range = 1..10
p a_range
a_range.each do |value|
p value + 5
end
another_range = 'a'..'f'
another_range.each do |val|
p val
end
p a_range.to_a
#---------------
# MAP - iterator returns an array of the same length of the array you're acting on
nums = 1..10
mapped = nums.map do |num|
num * 3
end
p mapped
mapped = nums.map do |num|
if num % 2 == 0
'even'
else
num
end
end
mapped = nums.map do |num|
if num.odd?
'odd'
else
num
end
end
p mapped
def even_or_odd(array)
array.map do |num|
if num.even?
'even'
elsif num.odd?
'odd'
else
'what did you type?'
end
end
end
# p even_or_odd (1..10)
# SELECT
# -like filter in js
# -built in if statement
# -returns subset
def only_evens(array)
array.select do |value|
value.even?
end
end
p only_evens(1..10)