浏览 2591 次
锁定老帖子 主题:Advanced Ruby
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-11
Syntax Sugar if not version.empty? return version.gsub('_', '.') end unless version.empty? return version.gsub('_', '.') end return if version.valid? return if not version.valid? return unless version.valid? if person.xy? gender = 'M' else gender = 'F' end gender = person.xy? ? 'M' : 'F' for item in items puts item.to_s end items.each do |item| puts item.to_s end for i in 1..3 quantity = gets.chomp.to_i next if quantity.zero? redo if quantity > LIMIT retry if quantity == RESTART break if quantity == FINISHED quantities[i] = quantity end (1..5).collect { |i| i * i } # [1, 4, 9, 16, 25] (1..5).detect { |i| i % 2 == 0 } # 2 (1..5).select { |i| i % 2 == 0 } # [2, 4] (1..5).reject { |i| i % 2 == 0 } # [1, 3, 5] (1..5).inject { |sum, n| sum + n } # 15 Alternative Syntax puts '"Hello World!"\n' # "Hello World!"\n puts "\"Hello World!\"\n" # "Hello World!" puts %q("Hello World!"\n) # "Hello World!"\n puts %Q("Hello World!"\n) # "Hello World!" puts %!"Hello World\!"\n! # "Hello World!" exec('ls *.rb') system('ls *.rb') `ls *.rb` %x(ls *.rb) system('echo *') system('echo', '*') /[ \t]+$/i %r([ \t]+$)i Regexp.new( "[ \t]+$", Regexp::IGNORECASE ) ["one", "two", "three"] %w(one two three) 1..5 Range.new(1, 5) # (1..5).to_a == [1, 2, 3, 4, 5] 1...5 Range.new(1, 5, true) # (1...5).to_a == [1, 2, 3, 4] Variables $global_variable @instance_variable @@class_variable CONSTANT local_variable Blocks & Closures with_block a, b { ... } # with_block(a, b { ... }) with_block a, b do ... end # with_block(a, b) { ... } puts begin t = Time.new t.to_s end def capitalizer(value) yield value.capitalize end capitalizer('ruby') do |language| puts language end def capitalizer(value) value = value.capitalize if block_given? yield value else value end end def capitalizer(value) yield value.capitalize end def capitalizer(value, &block) yield value.capitalize end proc_adder = Proc.new { return i + i } lambda_adder = lambda { return i + i } visits = 0 visit = lambda { |i| visits += i } visit.call 3 Exceptions begin # code rescue AnError # handle exception rescue AnotherError # handle exception else # only if there were no exceptions ensure # always, regardless of exceptions end def connect @handle = Connection.new rescue raise ConnectionError end Classes class Person attr_accessor :name def initialize(first, last) name = first + ' ' + last end end person = Person.new('Alex', 'Chin') class Person attr_accessor :name class Address attr_accessor :address, :zip end end address = Person::Address.new class Person attr_accessor :name end class Student < Person attr_accessor :gpa end student = Student.new student.name = 'Alex Chin' Modules module Demographics attr_accessor :dob def age (Date.today - dob).to_i / 365 end end class Person include Demographics end person = Person.new person.extend Demographics module Demographics def self.included(base) base.extend ClassMethods end module ClassMethods def years_since(date) (Date.today - date).to_i / 365 end end end 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-08-11
ORUG的Tyler Hunt的《Advanced Ruby》
原文在哪?我到ORUG没有找到 |
|
返回顶楼 | |