Ruby编程基础知识概括:
1. ruby is an object-oriented language
在ruby语言中,你操作的所有东西都是对象,操作的结果同样是对象。
2. ruby names
局部变量、方法参数和方法名都应该以小写字母或者下画线开头 。
实例变量必须以“@”符号开头。
如果方法名或者变量名包含多个单词,应该用下划线来隔开各个单词。
类名、模块名和常量名必须以大写字母开头。
:id 可以把符号看作字符串文本,被变成了常量,意思是“名字叫做id的东西”。
3. methods
如:
def say_goodnight(name) result = "Good night, #{name.capitalize}" end puts say_goodnight('uncle')
4. classes
如:
class Greeter def initialize(name) @name = name end def name @name end def name=(new_name) @name = new_name end end g = Greeter.new("Jack") #声明 attr_accessor :name attr_reader: greeting attr_writer: age
5. private and protected
6. modules
模块和类有相似之处:它们都包含一组方法、常量、以及其他类和模块的定义。但与类不同的是,你无法创建模块的实例。
模块的用途有两个:
首先,它们扮演着命名空间的角色,使得方法的名字不会彼此冲突。
其次,它们是你可以在不同的类之间共享同样的功能。
7. arrays and hashes
如:
a = [1, 'cat', 3.14] a[0] a[2] = nil <<方法,会把一个值附加到数组的尾端。 a = %w{ ant bee cat dog elk } inst_section = { :cello => 'string', :oboe => 'woodwind' } inst_section[:cello] inst_section[:no] #=> nil -> false
8. hashes and parameter lists
redirect_to :action => 'show', :id => product.id -> redirect_to({:action => 'show', :id => product.id})
9. control structures
如:
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 ... end puts "will" if x > 3000
10. Regular Expressions
在ruby中,创建正则表达式的方式通常是/pattern/或者%r{pattern}
如
if line =~ /P(erl|ython)/ ... end
11. blocks and iterators
如:
animals = %w( ant bee cat dog elk) animals.each { |animal| puts animal} 3.times { prints "Ho! " } #=> Ho! Ho! Ho!
12. Exceptions
如:
begin ... resuce Exception ... end
13. Marshaling Objects(对象序列化)
ruby可以将对象转换成字节流,并将其存储在应用程序之外,这样的处理被称为序列化。
被保存的对象可以在以后被应用程序的另一个实例读取出来,并再造原来这个对象。
rails使用序列化功能来保存session数据
14. interactive ruby
ruby irb
rails script/console
15. ruby idioms(惯用法)
empty! empty?
a || b
a ||= b
obj = self.new
require File.dirname(__FILE__) + '/../test_helper'
15. RDoc Documentation