RUBY学习总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Ruby学习总结
第一章
1.3.1换行符与\
目标输出
hello,
ruby
!程序可以写
print(“hello,\n ruby\n!\n”)
也可以这么写
print(“hello,
ruby
!
”)两种输出相同,但第一种比第二种效率要高。
1.3.2‘’与“”
单引号会原封不动的把转义字符输出print(‘hello,\n ruby\n!\n’)输出结果hello,\n ruby\n!\n在单引号里\\转义为\
1.4方法调用
方法调用可以省略(),也可以用逗号,表示输入多个参数。
1.7中文使用
中文使用#encoding:例如#encoding:GBK 1.9变量
使用#{}在双引号字符串中放入变量area=’中国’
print‘我是#{area}人’输出:我是中国人第二章
2.1.7数组的循环
数组.each do|变量|
end example:
names=[“小林”,”小Y”] names.each do|name| print"#{name}""\n" end
do~end之间部分称为块,块的另一种写法names.each{|name| print"#{name}""\n" }
2.2散列
address={name:"高桥",pinyin:"gaoqiao",:postal=>"123456"}
2.2.1符号
创建符号,只需要在标识符的开头加上:就可以了。
符号与字符串之间的区别
1.字符串和符号,都是Ruby中表示文本的方式
不管字符串变量也好,符号变量也好,都是用来表示文本的,它们之间,也可以互相转换(通过to_sym和to_s):>>"book".to_sym
=>:book
>>:track.to_s
=>"track"
2.相同的符号是一个对象,相同的字符并不一定是一个对象
这就是符号和字符串最大的差别,符号是不可变的,不能对一个符号进行修改。所以说,两个看起来相同的符号一定是一个对象,但是说两个看起来一样的字符串是一个对象,就不对了。
这里,我们用equal?方法检验这一点,当两个对象相同时,equal?返回true,反之是false:
>>:book.equal?(:book)
=>true
>>"book".equal?("book")
=>false
3.处理符号相比字符串,占用更少的资源
这也就是为什么有些时候我们要使用符号的原因,由于字符串变量必须具有各种修改其内容的功能,所以字符串的维护和处理的开销就很大,但是有些时候,我们并不需要修改和处理创建的文本信息,这个时候用符号再好不过了。
比较典型的用法,就是在Rails中,用符号来指代散列中的参数名称:<%for article in@articles-%>
<%=link_to article.title,
:controller=>"article",
:action=>"show",
:id=>article.id%>
<%end-%>
反之,如果我们把:controller写成"controller",把:action写成"action",吧:id 写成"id",每一个循环都要创建3个新的字符对象,但是我们又不需要对这些字符串进行修改操作,白白添加了很多处理器开销,而且写成符号的形式更加简练,可以更容易分别出参数和值,何乐而不为呢。
2.2.2散列的创建
address={“name”=>"高桥",pinyin:"gaoqiao",:postal=>"123456"}
对象方式:对象(键)=>对象(值)例如:“name”=>"高桥"
符号两种写法:1、pinyin:"gaoqiao"
2、:postal=>"123456"
2.2.3散列的使用
散列名[键]=希望保存的对象
2.2.4散列的循环
散列.each do|key,value|
//do some thing
end
散列.each{|key,value|
//do some thing
}
第四章对象、变量和常量
4.3变量
变量的命名方式决定了变量的种类
局部变量
以英文字母或者_开头
全局变量
以$开头
实例变量
以@开头
类变量
以@@开头
类变量被类的所有对象所共享,它与类方法相关联,对一个给定的类来说,类变量只存在一份拷贝。类变量由两个@符开头,例如@@count。与全局变量和实例变量不同,类变量在使用之前必须被初始化。通常,初始化就是在类定义中
的简单赋值。
例如,我们的点唱机可能希望记录每首歌被播放的次数。这个数目可能是Song对象的一个实例变量。当一首歌被播放时,实例中的值增加。但是,假如我们还想要了解下一共播放了多少首歌。通过搜索所有Song对象并累加它们的播放次数,或者冒天下之大不韪使用全局变量来完成统计;或者,让我们使用类变量。
class Song
@@plays=0
def initialize(name.artist,duration)
@name=name
@artlist=artist
@duration=duration
@plays=0
end
def play
@plays+=1#same as@plays=@plays+1
@@plays+=1
"This song:#@plays plays.Total#@@plays plays."
end