[2014年学习计划之RoR系列] 第二步 - 熟悉Ruby语言 (1/n)
2014-01-06 16:55
274 查看
完成第一步之后,打算开始花两周时间,学习Ruby语言。
在网上找了两本教程,先看第一本《Programming Ruby 2nd》这书有个小标题叫做“The Pragmatic Programmers' Guide”。
希望真如它说的实用,不是花哨的大忽悠,
这里就记录一下学习笔记了。
运行Ruby
安装了Ruby之后,我在Windows Command里边直接敲了'ruby',满心期望会有一个类似Python那样的交互环境,结果不是。看了书才知道
这是一个一次性的输入 - 用户输入结束后按Ctrl + D,ruby就会解释用户的输入。这个不是那么好用,于是换irb,以前用过一个Python的PREL跟irb很相似。
简单明了,这里也不多说了。
RDoc 和 ri
RDoc就是ruby的文档,跟JavaDoc类似,不用赘述。ri我试了一下,发现跟书上写的不太一样,是因为我用的ruby版本比较新吗?这个问题不重要,先放一边了。
函数的定义和调用
def say_goodnight(name)
result = "Good night, " + name
return result
end
# Time for bed...
puts say_goodnight("JohnBoy")
puts say_goodnight("MaryEllen")
这个没什么好说的。begin/end风格的,不需要像Python那样严格对待缩进。
Ruby中的命名约定 - 以首字母区分
局部变量,方法的参数和方法名以小写字母开始;
全局变量是以美元符号($)开始的(有点想念php了);
实例变量用一个"@"符号开始;
类变量用两个"@"符号开始,也就是@@;
类名,模块名和常量以大写字母开始;
注意@之后不可以是数字;
实例变量如果包含多个单词,单词之间用下划线“_”连接;
如果类名包含多个单词,每个单词首字母大写,例如HomeController
数组和哈希 (hashes,或者叫字典)
很高兴看到ruby的数组也是zero-based。书中顺带着提了一下 nil 说是跟其他语言中的null不一样,这个以后再来细究吧。
如果是创建字符串数组,有一个捷径如下图所示:
ruby中的哈希,如下图所示。
inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind',
'trumpet' => 'brass',
'violin' => 'string'
}
inst_section['oboe'] -> "woodwind"
inst_section['cello'] -> "string"
inst_section['bassoon'] -> nil
注意如果某一个key不存在,哈希就返回nil。这是ruby哈希的缺省行为,下面的例子将缺省值改为0。
histogram = Hash.new(0)
histogram['key1'] -> 0
histogram['key1'] = histogram['key1'] + 1
histogram['key1'] -> 1
控制结构(Control Structures)
if/else/elsif 和 while,直接看例子吧
if count > 10
puts "Try again"
elsif tries == 3
puts "You lose"
else
puts "Enter a number"
end
while weight < 100 and num_pallets <= 30
pallet = next_pallet()
weight += pallet.weight
num_pallets += 1
end
while line = gets
puts line.downcase
end
statement modifiers (怎么翻译好听呢?) 是ruby中的一种捷径(个人觉得成为语法糖更合适)。如果if/while的条件表达式很简单的时候可以用下面例子的写法,
能够简化/美化代码。
if radiation > 3000
puts "Danger, Will Robinson"
end
puts "Danger, Will Robinson" if radiation > 3000
square = 2
while square < 1000
square = square*square
end
square = 2
square = square*square while square < 1000
-------------------------------------------------- 2014-01-06 ------------------------------------------------------------------------
在网上找了两本教程,先看第一本《Programming Ruby 2nd》这书有个小标题叫做“The Pragmatic Programmers' Guide”。
希望真如它说的实用,不是花哨的大忽悠,
这里就记录一下学习笔记了。
运行Ruby
安装了Ruby之后,我在Windows Command里边直接敲了'ruby',满心期望会有一个类似Python那样的交互环境,结果不是。看了书才知道
这是一个一次性的输入 - 用户输入结束后按Ctrl + D,ruby就会解释用户的输入。这个不是那么好用,于是换irb,以前用过一个Python的PREL跟irb很相似。
简单明了,这里也不多说了。
RDoc 和 ri
RDoc就是ruby的文档,跟JavaDoc类似,不用赘述。ri我试了一下,发现跟书上写的不太一样,是因为我用的ruby版本比较新吗?这个问题不重要,先放一边了。
函数的定义和调用
def say_goodnight(name)
result = "Good night, " + name
return result
end
# Time for bed...
puts say_goodnight("JohnBoy")
puts say_goodnight("MaryEllen")
这个没什么好说的。begin/end风格的,不需要像Python那样严格对待缩进。
Ruby中的命名约定 - 以首字母区分
局部变量,方法的参数和方法名以小写字母开始;
全局变量是以美元符号($)开始的(有点想念php了);
实例变量用一个"@"符号开始;
类变量用两个"@"符号开始,也就是@@;
类名,模块名和常量以大写字母开始;
注意@之后不可以是数字;
实例变量如果包含多个单词,单词之间用下划线“_”连接;
如果类名包含多个单词,每个单词首字母大写,例如HomeController
数组和哈希 (hashes,或者叫字典)
很高兴看到ruby的数组也是zero-based。书中顺带着提了一下 nil 说是跟其他语言中的null不一样,这个以后再来细究吧。
如果是创建字符串数组,有一个捷径如下图所示:
ruby中的哈希,如下图所示。
inst_section = {
'cello' => 'string',
'clarinet' => 'woodwind',
'drum' => 'percussion',
'oboe' => 'woodwind',
'trumpet' => 'brass',
'violin' => 'string'
}
inst_section['oboe'] -> "woodwind"
inst_section['cello'] -> "string"
inst_section['bassoon'] -> nil
注意如果某一个key不存在,哈希就返回nil。这是ruby哈希的缺省行为,下面的例子将缺省值改为0。
histogram = Hash.new(0)
histogram['key1'] -> 0
histogram['key1'] = histogram['key1'] + 1
histogram['key1'] -> 1
控制结构(Control Structures)
if/else/elsif 和 while,直接看例子吧
if count > 10
puts "Try again"
elsif tries == 3
puts "You lose"
else
puts "Enter a number"
end
while weight < 100 and num_pallets <= 30
pallet = next_pallet()
weight += pallet.weight
num_pallets += 1
end
while line = gets
puts line.downcase
end
statement modifiers (怎么翻译好听呢?) 是ruby中的一种捷径(个人觉得成为语法糖更合适)。如果if/while的条件表达式很简单的时候可以用下面例子的写法,
能够简化/美化代码。
if radiation > 3000
puts "Danger, Will Robinson"
end
puts "Danger, Will Robinson" if radiation > 3000
square = 2
while square < 1000
square = square*square
end
square = 2
square = square*square while square < 1000
-------------------------------------------------- 2014-01-06 ------------------------------------------------------------------------
相关文章推荐
- [2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (2/n) Blocks and Iterators (代码块和迭代器)
- [2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (3/n)
- [2014年学习计划之RoR系列] 第二步 – 熟悉Ruby语言 (2/n) Blocks and Iterators (代码块和迭代器)
- [2014年学习计划之RoR系列] 第一步 - 搭建开发环境
- 2014年学习计划
- 未来学习计划_2014年_10月_30日
- 项目经理案头手册学习系列【7】——项目进度计划编制
- 2014年总学习计划
- 2014年学习计划
- HACMP 认证学习系列,第 2 部分:计划与设计
- 2014年年度学习计划以及读书清单一览
- 项目经理案头手册学习系列【6】——制定实施计划
- Android下SQLite数据库编程学习系列之一---熟悉SQLite及命令行操作
- 对于学习ror的 半年的总结及下一年的计划
- 项目经理案头手册学习系列【4】——计划:制定项目使命、前景、目标和目的
- 2014年学习计划
- ROR 学习笔记系列二 基于ROR的简单Hello World程序入门
- 【cocos2d-x IOS游戏开发】2014年开发及学习计划:cocos2d-x视频专辑