先看一个方法的定义:
defsay_goodnight(name) #(name) 这里的()是可选的
result = "Good night, " + name
return result
end
# Time for bed...
puts say_goodnight("John-Boy")
puts say_goodnight("Mary-Ellen") #这里也可以写成 puts(say_goodnigth("xx"))
1.方法使用def开始,end结束
2.#表示注释,相当于java,c++里面的//
3.每行结束不需要";",每个语句占一行
4.不强调缩进,不过建议使用2个字符的缩进,4个字符缩进常常会使得程序超出屏幕右端
5.变量不需要声明,在它被赋值的时候开始存在
6.参数是可以加或者不加括号的,但是优先级规则很难判断哪个参数属于哪个方法,所以,尽量使用括号
7.puts方法,结束要打印一个回车
下面介绍String literals:
String literals 有2种表现形式,1)"xxxxxxxxxx" 2)'xxxxxxxxxxx'
2种表现是有区别的:
1.单引号的只可以使用纯粹的 literals,详细的说就是不能包括转义字符,以及一些特殊的表示,所以它处理速度快于第2种方式
2.双引号的可以使用转义字符和#{expression},下面详细说明:
a.替换转移字符,比如\n,替换成为binary value
b.替换#{expression},替换成为expression的值
例:
def say_goodnight(name)
result = "Good night, #{name.capitalize}"
return result
end
puts say_goodnight('uncle')
注意,#{expression}这里的括号在某些情况下可以省略,1)当expression是一个global varables时 2)当expression是一个instance varables时 3)expression是一个class varables时
例:
$greeting ="Hello"
@name= "Prudence"
puts "#$greeting,#@name"
下面介绍很重要的命名规则:
命名(names):名字的第一个字符标识了名字的用法(usage)
1.变量命名规则:
a.变量名用小写字母或者下划线开始(下划线被认为是字母)
b.如果是全局变量,用$开始
c.如果是instance varables,用@开始
d.如果是class varables,用@@开始
e.@,$后面不可以接数字
f._就是字母,但是它没有大写形式
2.其他的命名规则:
a.类名,module名,常量,用大写字母开始
b.instance varables 如果有多个单词,用_分开,例如:@i_love_you
c.类名使用头字母大写的方式区别多个单词,例如:ILoveYou
补充:
代码如下
def say_goodnight(name)
"Good night, #{name}" #字符串被隐式的赋值给了一个临时变量
end
puts say_goodnight('Ma')
结果:Good night,Ma
ruby中,方法返回的值是最后一次赋值的表达式的值