`

Programming Ruby 2nd 读书笔记2

阅读更多

C05 Standard Types

1. String

 

print <<STRING1,<<STRING2
  Concat
  STRING1
    enate
    STRING2
produces:
  Concat
    enate

 

 

2. Range   

a = 1..3 #a = 1,2,3
a = 1...3 # a = 1,2

 

(1..10) === 5 ! true
(1..10) === 15 ! false
(1..10) === 3.14159 ! true
('a'..'j') === 'c' ! true
('a'..'j') === 'z' ! false

 

  
class UV
  include Comparable
  attr :volume
  def initialize(volume) # 0..9
    @volume = volume
  end
  def inspect
    '#' * @volume
  end
  # Support for ranges
  def <=>(other)
    self.volume <=> other.volume
  end
  def succ
    raise(IndexError, "Volume too big") if @volume >= 9
    VU.new(@volume.succ)
  end
end

 

(1..10) === 15 -> false
(1..10) === 3.14159 -> true
('a'..'j') === 'c' -> true
('a'..'j') === 'z' -> false

3. Regular Expression

re = /(\d+):(\d+)/ # match a time hh:mm
md = re.match("Time: 12:34am")
md.class -> MatchData
md[0] # == $& -> "12:34"
md[1] # == $1 -> "12"
md[2] # == $2 -> "34"
md.pre_match # == $` -> "Time: "
md.post_match # == $' -> "am"

 

C06 Method

1. 可变参数

 

def varargs(arg1, *rest)
  "Got #{arg1} and #{rest.join(', ')}"
end

puts(varargs("one", "two", "three"))

 

 

2.  Block

def take_block(p1)
  if block_given?
    yield(p1)
  else
    p1
  end
end

puts(take_block("no block"))
puts(take_block("no block"){|x| x.sub(/no /, '')})

class TaxCalculator
  def initialize(name, &block)
    @name = name
    @block = block
  end
  
  def get_tax(amount)
    "#{@name} on #{@amount} = #{@block.call(amount)}"
  end
end

tc = TaxCalculator.new("Sales Tax"){|amt| amt * 0.075}
puts(tc.get_tax(100))      

 

3.  Hash参数

def match_score(time, scores)
  puts("Match score on #{time}")
  scores.each do |name, score|
    puts("#{name} -- #{score}")
  end
end   

match_score('2009-03-15', 
           'Zhibin' => 7,
           'Henry' => 3,
           'Keyu' => 2
           )         

 

4.  Lambda

print('(t)imes or (p)lus')
times = gets
print('number:')
number = Integer(gets)
if times =~ /^t/
  calc = lambda { |n| n * number }
else
  calc = lambda { |n| n + number }
end
puts((1..10).collect(&calc).join(', '))  

 

C07 Expressions 

1.  Overload operator

 

class Fixnum
  alias old_plus +      
  
  def +(other)
    old_plus(other).succ
  end  
end
puts(1+2)        

 

2.  执行命令

puts(`date`)
puts($?)
puts(%x{echo 'hello world'})
puts($?) 
puts(`./test.x`) 
puts($?)     

 

3.  并行赋值

 

b, (c, d), e = 1,2,3,4 -> b == 1, c == 2, d == nil, e == 3
b, (c, d), e = [1,2,3,4] -> b == 1, c == 2, d == nil, e == 3
b, (c, d), e = 1,[2,3],4 -> b == 1, c == 2, d == 3, e == 4
b, (c, d), e = 1,[2,3,4],5 -> b == 1, c == 2, d == 3, e == 5
b, (c,*d), e = 1,[2,3,4],5 -> b == 1, c == 2, d == [3, 4], e == 5

4.  Case

 

def vowel_count(word)
  count = 0
  word.each_char do |c|
    case c
    when 'a'
      count += 1
    when 'e'   
      count += 1 
    when 'i'
      count += 1 
    when 'o'     
      count += 1 
    when 'u'
      count += 1 
    end
  end
  count  
end

puts(vowel_count('I love u!'))  

 

5. Variable Scope

while, for, if, util 这些都不会带来新的作用域,可是block的使用,会带来新的作用域。 

 

 

分享到:
评论

相关推荐

    Programming Ruby 2nd.pdf

    根据提供的文件信息,可以提取以下关于Ruby编程语言及其入门书籍《Programming Ruby 2nd》的知识点: 1. Ruby语言概述:Ruby是一种功能强大且实用的编程语言,被许多开发者所喜爱。它以智能、优雅和有趣而闻名。...

    Programming Ruby - The Pragmatic Programmer's Guide, 2nd Edition (2005) [annotated]

    《Programming Ruby - The Pragmatic Programmer's Guide》第二版(2005年注释版)是一本在IT行业中享有盛誉的经典书籍,专门针对Ruby编程语言进行了深入浅出的讲解。该书不仅覆盖了Ruby语言的基础知识,还探讨了其...

    Programming Ruby 2nd Edition

    《Programming Ruby 2nd Edition》是关于Ruby编程语言的经典指南,尤其对于想要深入理解并熟练掌握Ruby编程的开发者来说,这本书具有极高的价值。Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的语法和强大的...

    Programming Ruby(读书笔记)-3章

    《Programming Ruby》是一本关于Ruby编程语言的经典书籍,它的第三章深入探讨了Ruby的基本语法和核心概念。在这一章中,作者介绍了变量、常量、符号、数组、哈希等核心数据类型,以及控制流(条件语句和循环)和方法...

    Programming Ruby 2nd

    《Programming Ruby 2nd》是编程领域的一本经典著作,由Dave Thomas、Chad Fowler和Andy Hunt合著,被广大开发者誉为“程序员的指南”。这本书深入浅出地介绍了Ruby编程语言,帮助读者掌握这种优雅而强大的语言。 ...

    Pragmatic Bookshelf, Programming Ruby 2nd

    ### 知识点一:《Programming Ruby》书籍概述 - **书籍名称**:“Programming Ruby”(也被称为“Pickaxe Book”) - **版本**:本书为第二版 - **作者团队**:本书由Dave Thomas、Andy Hunt、Thomas Stewart、...

    Programming ruby.pdf

    《Programming Ruby》是一本关于Ruby编程语言的经典著作,由Dave Thomas、Andy Hunt和Chad Fowler合著。这本书自2004年初版以来,一直是学习Ruby的首选资源,被誉为“Pickaxe”书,因其封面的图标而得名。Ruby是一种...

    Programming Ruby.pdf

    《Programming Ruby》被誉为是学习Ruby语言的最佳指南,这本书在IT界享有极高的声誉,被亲切地称为“镐头书”,其价值与影响力无远弗届。本书不仅详细介绍了Ruby语言的核心概念、语法结构以及编程实践,还深入探讨了...

    Programming_ruby-2nd.pdf

    1. 书籍介绍:《Programming Ruby - 2nd Edition》是一本关于Ruby编程语言的英文书籍。该书被多位业界知名人士推荐,并对Ruby语言的介绍和学习提供了重要支持。 2. Ruby语言的特点:Ruby被描述为一个强大且实用的...

    Programming Ruby中文版第二版[高清扫描版][带书签]和Programming.Ruby-2nd[高清文字版][带书签].pdf

    《Programming Ruby》中文版第二版是一本专注于Ruby编程语言的经典教程。这本书的两个版本——高清扫描版和高清文字版,都是为了便于读者学习和查阅,其中都带有书签功能,帮助读者快速定位到相关内容。 Ruby是一种...

    ruby学习资源(Programming Ruby, Learning Ruby, The Ruby Way)

    内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm

    《Programming Ruby》中文第2版源代碼下載

    《Programming Ruby》是一本经典的Ruby编程语言教程,中文第二版为中国的程序员提供了深入学习Ruby的宝贵资源。这本书的源代码下载对于读者来说是极其有用的,因为它允许读者在实践中探索和理解书中所阐述的概念。...

    《The C Programming Language》读书笔记

    《The C Programming Language》这本书是C语言学习者的经典教材,对于初学者来说,它提供了深入浅出的讲解。本文将着重讨论第一章中提到的三个重要知识点。 首先,我们要理解循环终止的机制。在C语言中,常见的循环...

    Programming Ruby 1.9 (3rd edition)和源码

    《Programming Ruby 1.9 (3rd edition)》是一本专为程序员编写的关于Ruby语言的权威指南,这本书的第三版详细介绍了Ruby 1.9版本的语言特性、库以及编程实践。Ruby是一种动态、面向对象的脚本语言,以其简洁、优雅的...

    Pragmatic Programmers - Programming Ruby(2nd Edition Syngress).rar

    《编程珠玑:Ruby语言实践指南(第2版)》是由Pragmatic Programmers出版的一本关于Ruby编程语言的经典著作。这本书深入浅出地讲解了Ruby的语法特性、设计哲学以及实际开发中的最佳实践,是Ruby程序员的重要参考资料...

Global site tag (gtag.js) - Google Analytics