全部博文(2065)
分类:
2010-10-18 21:33:07
第一部分Ruby面面观
1、 交互式Ruby
1.1 命令行输入ruby然后敲代码完了之后ctrl + D看结果。不方便
1.2 使用irb 命令。相当于在python里面先敲python然后再在里面输入代码一样。这个比较方便一些了
irb#1(main):001:0> def sum(a,b) #怎么跟python一样呀?难道是小抄 irb#1(main):002:1> a+b irb#1(main):003:1> end #没有return的? => nil irb#1(main):004:0> sum(3,4) => 7 irb#1(main):005:0> sum("a","b") #真正的弱语言类型呀。 => "ab" |
1.3 当然可以把程序保存到*.rb文件里面然后在命令行中输入ruby *.rb即可在unix里面还可以将一个rb文件赋上可执行权限然后就直接跟shell一样执行了
2、 Ruby文档:RDoc和ri
目前Ruby自带的标准库含有的方法已超过了9 000个。可以用RDoc来提取里面的文档。跟JAVA里面的是一样的。如果你安装了RDoc的话那就可以考虑使用ri命令行工具了。通过使用ri命令我们是可以查看某个类的概要信息的。这就有点类似于man命令了
3、 Ruby是一门真正的面向对象
它所操作的每件东西都是对象。操作的结果也是对象
通过构造函数来创建对象的。如
Song1 = Song.new(“Ruby Tuesday”)
3.1 实例方法。每个类都可以定义其实例方法的。每个方法都是一组功能它们可能会在类的内部或从类的外部被调用。
3.2 方法是通过发送消息来唤起调用的。消息包含了方法名称及方法可能需要的参数,当对象接收到一条消息时它在类中查找相应的方法如果找到了就执行。如果没有就。。。
3.3 JAVA里面调用一个方法是这样的:Math.abs() 在C里面是这样的:strlen()
在python里面是s.strip() ruby跟python一样是纯正的面向对象
4、 Ruby的一些基本知识
4.1 如果每个语句在单独的一个行的话就不需要用分号了。这跟python又一样的
4.2 注释也是#。也一样
4.3 没有缩进要求。这点比python人性化一些
4.4 函数定义
def say_goodnight(name)
result = "good night" + name
return result
end
def say_goodnight(name)
result = "good night #{name}"
return result
end
puts say_goodnight("a")
其中字符串的连接操作可以做到与PHP里面的一个样的。即在字符串里面直接套一个字符串片段的然后其实就是替换掉了!而且在这里面是可以进行复杂的表达式操作的。比如对其进行函数运算的。
示例:
def say_goodnight(name)
result = "good night #{name.capitalize}" #能够进行复杂的字符串运算
return result
end
4.5 命名惯例来区分名称的用途
名称的第一个字符显示这个名称如何被使用。
局部变量、方法参数和方法名称都必须以小写字母或下画线开始。
全局变量都有美元符号($)为前缀,而实例变量以(@)开始。类变量以两@@符号开始。
类名称、模块名称和常量都必须以一个大写字母开始
4.6 数组和散列表
通过键KEY来访问。这个跟PHP里面的数组访问是一个道理的。数组的键是数字表示索引下标,而散列表的话就是任何对象都行的。而且数组里面是可以保存任何类型的数据对象
示例:
a = [1,"abc"]
puts a[0]
说明:nil跟python里面None不一样。这是表示对象只是它不表示任何东西。
%w 的妙用。当创建一个数组的时候里面有多个引号或逗号的时候就可以考虑用它了!
a = %w{a b c} #非常方便的!
puts a[0],a[1]
lists = {'a'=>'b','e'=>'f'}
puts lists['a']
4.7 正则表达式
对正则表达式的内建支持通常只限于脚本语言如Ruby、Perl和AWK等