Programming Ruby 2nd 读书笔记1

不应该算是新学Ruby吧,应该算是复习。Rails也用过一些,不过之前没有这样做过笔记。我曾经写过一个帖子,讨论关于Perl,Python和Ruby的,写得还比价客观。这里我只想表达一个观点,如果从语法和概念上说,我更喜欢Ruby。这不是我一个人的观点,至少我认识几个Python的小牛也认为Python的语法不是很好“玩”。譬如,那种缩进表示的Block,譬如你要用全局函数open,len。虽然我更prefer{}来表示一个block,不过坦白说Ruby用end我还是能接受的(我就纳闷了,明明一个end就很OK,为什么Delphi和Basic要用Begin和End呢?)。而那种File.new, -3.abs这样单纯的面向对象的语法更是让我着迷。当然了,我们要尽量的避免使用那种Perl的习惯,什么$_这种东西,能不用尽量别用。我本人认为Perl的脚本非常的难于维护^_^

 

      言归正传吧,这本书我2006年8月份就看过了,之后我也用Ruby写过一些“私人”脚本,帮助我的日常工作和娱乐。基本上我觉得Ruby是一个很有趣的语言,我对它的喜好仅次于C++(虽然Java我也经常用)。这个Blog系列就用来记录我复习Programming Ruby 2nd的笔记吧。

 

C03  Classes, Objects and Variables

1.  定义一个类

class Song
  attr_reader :name, :duration, :singer
  @@play = 0
  def initialize(name, duration, singer)
    @name = name
    @duration = duration
    @singer = singer
    @play = 0
  end
  def to_s()
    "[Song: #@name -- #@singer -- #@duration]"
  end
  def play()
    @play += 1
    @@play += 1
    puts("Play #{to_s} #@play -- #@@play")
  end
end

 

@xxx表示@x是一个instance variable,@@yyy表示@@yyy是一个class variable。to_s就是Java的toString()方法。 attr_reader表示之后的variable会有get方法。

 

C04 Containers, Blocks, and Iterators

1. Array

 

a = [ 3.14159, "pie", 99 ]
a.class -> Array
a.length -> 3
a[0] -> 3.14159
a[1] -> "pie"
a[2] -> 99
a[3] -> nil
b = Array.new
b.class -> Array
b.length -> 0
b[0] = "second"
b[1] = "array"
b -> ["second", "array"]
a = [ 1, 3, 5, 7, 9 ]
a[1] -> 9
a[2] -> 7
a[99] -> nil
a = [ 1, 3, 5, 7, 9 ]
a[1, 3] -> [3, 5, 7]
a[3, 1] -> [7]
a[3,2] -> [5, 7]a = [ 1, 3, 5, 7, 9 ]
a[1..3] -> [3, 5, 7]
a[1...3] -> [3, 5]
a[3..3] -> [7]
a[3..1] -> [5, 7, 9]
 

2. Hash

h = { 'dog' => 'canine', 'cat' => 'feline', 'donkey' => 'asinine' }
h.length -> 3
h['dog'] -> "canine"
h['cow'] = 'bovine'
h[12] = 'dodecine'
h['cat'] = 99
h -> {"cow"=>"bovine", "cat"=>99, 12=>"dodecine",
"donkey"=>"asinine", "dog"=>"canine"}

 

3.  Block

def fib_up_to(max)
  i1, i2 = 1, 1 # parallel assignment (i1 = 1 and i2 = 1)
  while i1 <= max
    yield i1
    i1, i2 = i2, i1+i2
  end
end
fib_up_to(1000) {|f| print f, " " }

produces:
    1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987
  class File

  def File.my_open(*args)
    result = file = File.new(*args)
    # If there's a block, pass in the file and close
    # the file when it returns
    if block_given?
      result = yield file
      file.close
    end
    return result
  end
end
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
疫情居家办公系统管理系统按照操作主体分为管理员和用户。管理员的功能包括办公设备管理、部门信息管理、字典管理、公告信息管理、请假信息管理、签到信息管理、留言管理、外出报备管理、薪资管理、用户管理、公司资料管理、管理员管理。用户的功能等。该系统采用了MySQL数据库,Java语言,Spring Boot框架等技术进行编程实现。 疫情居家办公系统管理系统可以提高疫情居家办公系统信息管理问题的解决效率,优化疫情居家办公系统信息处理流程,保证疫情居家办公系统信息数据的安全,它是一个非常可靠,非常安全的应用程序。 管理员权限操作的功能包括管理公告,管理疫情居家办公系统信息,包括外出报备管理,培训管理,签到管理,薪资管理等,可以管理公告。 外出报备管理界面,管理员在外出报备管理界面中可以对界面中显示,可以对外出报备信息的外出报备状态进行查看,可以添加新的外出报备信息等。签到管理界面,管理员在签到管理界面中查看签到种类信息,签到描述信息,新增签到信息等。公告管理界面,管理员在公告管理界面中新增公告,可以删除公告。公告类型管理界面,管理员在公告类型管理界面查看公告的工作状态,可以对公告的数据进行导出,可以添加新公告的信息,可以编辑公告信息,删除公告信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值