-
Notifications
You must be signed in to change notification settings - Fork 1
/
megagreeter-1.reb
executable file
·91 lines (78 loc) · 1.72 KB
/
megagreeter-1.reb
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
Rebol [
Title: "MegaGreeter From Ruby Language Tutorial Step #1"
File: %megagreeter-1.reb
Usage: {
Fire up a Rebol interpreter in the directory where these files
are located. Then at the command line, type:
do %megagreeter-1.reb
When it runs, you should get the output:
Hello World!
Goodbye World. Come back soon!
Hello Zeke!
Goodbye Zeke. Come back soon!
Hello Albert!
Hello Brenda!
Hello Charles!
Hello Dave!
Hello Englebert!
Goodbye Albert, Brenda, Charles, Dave, Englebert. Come back soon!
...
...
}
]
; Include the code that makes Rebol act more like Ruby
do %rubol.reb
class MegaGreeter [
attr_accessor .names
; Create the object
def initialize [names: "World"] [
.names: names
]
; Say hi to everybody
def say_hi [] [
either nil? .names [
puts "..."
] [
either block? .names [
; .names is a list of some kind, iterate!
foreach name .names [
puts to-string compose ["Hello " (name) "!"]
]
] [
puts to-string compose ["Hello " (.names) "!"]
]
]
]
; Say bye to everybody
def say_bye [] [
either nil? .names [
puts "..."
] [
either block? .names [
; join the list elements with commas
puts to-string compose [
"Goodbye " (ruby-join .names ", ") ". Come back soon!"
]
] [
puts to-string compose [
"Goodbye " (.names) ". Come back soon!"
]
]
]
]
]
mg: MegaGreeter/new []
mg/say_hi []
mg/say_bye []
; Change name to be "Zeke"
mg/names/set "Zeke"
mg/say_hi []
mg/say_bye []
; Change the name to an array of names
mg/names/set ["Albert" "Brenda" "Charles" "Dave" "Englebert"]
mg/say_hi []
mg/say_bye []
; Change to nil
mg/names/set nil
mg/say_hi []
mg/say_bye []