《20分钟体验 Ruby》通过这个例子你能感受ruby
1
#!/usr/bin/env ruby
2![](/Images/OutliningIndicators/None.gif)
3
class MegaGreeter
4
attr_accessor :names //设置属性,自动产生两个方法(name,name=)用来访问@name的值
//想知道一个类提供了那些方法?类名.instance_methods会告诉你,如果只想知道自己定义的方法加个false参数
5![](/Images/OutliningIndicators/None.gif)
6
# Create the object
7
def initialize(names = "World") //构造函数
8
@names = names //定义了局部变量@names
9
end
10![](/Images/OutliningIndicators/None.gif)
11
# Say hi to everybody
12
def say_hi
13
if @names.nil? //判断@names是否为nil
14
puts "
" //输出
15
elsif @names.respond_to?("each") //判断@names是否有each方法
16![](/Images/OutliningIndicators/None.gif)
17
# @names is a list of some kind, iterate!
18
@names.each do |name| //循环
19
puts "Hello #{name}!"
20
end
21
else
22
puts "Hello #{@names}!"
23
end
24
end
25![](/Images/OutliningIndicators/None.gif)
26
# Say bye to everybody
27
def say_bye
28
if @names.nil?
29
puts "
"
30
elsif @names.respond_to?("join")
31
# Join the list elements with commas
32
puts "Goodbye #{@names.join(", ")}. Come back soon!"
33
else
34
puts "Goodbye #{@names}. Come back soon!"
35
end
36
end
37![](/Images/OutliningIndicators/None.gif)
38
end
39![](/Images/OutliningIndicators/None.gif)
40![](/Images/OutliningIndicators/None.gif)
41
if __FILE__ == $0 //__FILE__ 现在运行的脚本文件的名字,
//这允许代码作为库调用的时候不运行启动代码, 而在作为执行脚本的时候调用启动代码。
42
mg = MegaGreeter.new
43
mg.say_hi
44
mg.say_bye
45![](/Images/OutliningIndicators/None.gif)
46
# Change name to be "Zeke"
47
mg.names = "Zeke"
48
mg.say_hi
49
mg.say_bye
50![](/Images/OutliningIndicators/None.gif)
51
# Change the name to an array of names
52
mg.names = ["Albert", "Brenda", "Charles",
53
"Dave", "Englebert"]
54
mg.say_hi
55
mg.say_bye
56![](/Images/OutliningIndicators/None.gif)
57
# Change to nil
58
mg.names = nil
59
mg.say_hi
60
mg.say_bye
61
end
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
//想知道一个类提供了那些方法?类名.instance_methods会告诉你,如果只想知道自己定义的方法加个false参数
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/None.gif)
21
![](/Images/OutliningIndicators/None.gif)
22
![](/Images/OutliningIndicators/None.gif)
23
![](/Images/OutliningIndicators/None.gif)
24
![](/Images/OutliningIndicators/None.gif)
25
![](/Images/OutliningIndicators/None.gif)
26
![](/Images/OutliningIndicators/None.gif)
27
![](/Images/OutliningIndicators/None.gif)
28
![](/Images/OutliningIndicators/None.gif)
29
![](/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/dot.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/None.gif)
33
![](/Images/OutliningIndicators/None.gif)
34
![](/Images/OutliningIndicators/None.gif)
35
![](/Images/OutliningIndicators/None.gif)
36
![](/Images/OutliningIndicators/None.gif)
37
![](/Images/OutliningIndicators/None.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/None.gif)
$0
是启动脚本的名字.//这允许代码作为库调用的时候不运行启动代码, 而在作为执行脚本的时候调用启动代码。
42
![](/Images/OutliningIndicators/None.gif)
43
![](/Images/OutliningIndicators/None.gif)
44
![](/Images/OutliningIndicators/None.gif)
45
![](/Images/OutliningIndicators/None.gif)
46
![](/Images/OutliningIndicators/None.gif)
47
![](/Images/OutliningIndicators/None.gif)
48
![](/Images/OutliningIndicators/None.gif)
49
![](/Images/OutliningIndicators/None.gif)
50
![](/Images/OutliningIndicators/None.gif)
51
![](/Images/OutliningIndicators/None.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/None.gif)
55
![](/Images/OutliningIndicators/None.gif)
56
![](/Images/OutliningIndicators/None.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/None.gif)
60
![](/Images/OutliningIndicators/None.gif)
61
![](/Images/OutliningIndicators/None.gif)