- 浏览: 1407547 次
- 性别:
- 来自: 火星
-
最新评论
-
aidd:
内核处理time_wait状态详解 -
ahtest:
赞一下~~
一个简单的ruby Metaprogram的例子 -
itiProCareer:
简直胡说八道,误人子弟啊。。。。谁告诉你 Ruby 1.9 ...
ruby中的类变量与类实例变量 -
dear531:
还得补充一句,惊群了之后,数据打印显示,只有一个子线程继续接受 ...
linux已经不存在惊群现象 -
dear531:
我用select试验了,用的ubuntu12.10,内核3.5 ...
linux已经不存在惊群现象
文章列表
1 使用多个构造方法
在ruby中没有像c++或者ruby中的构造器,可是我们依然能够创建出类似的多个构造器:
class ColoredRectangle
def initialize(r, g, b, s1, s2)
@r, @g, @b, @s1, @s2 = r, g, b, s1, s2
end
def ColoredRectangle.white_rect(s1, s2)
new(0xff, 0xff, 0xff, s1, s2)
end
def ColoredRectangle.gray_rect(s1, s2)
...
这边都只是个大概,具体的要自己去看文档了.
1 连接SQLite:
require 'sqlite'
db = SQLite::Database.new("library.db")
db.execute("select title,author from books") do |row|
p row
end
db.close
2连接mysql:
require 'mysql'
m = Mysql.new("localhost","name","passwo ...
- 2008-01-14 00:47
- 浏览 2509
- 评论(2)
经常我们需要以一种更透明的方式来存储和得到数据.Marshal模块提供了简单的对象持久化,PStore 库建立在这项技术之上。dbm 库使用像hash一样并永久的存贮在磁盘上.
1简单的Marshaling
经常我们需要创建一个对象,然后为了以后的使 ...
1 检测文件是否存在及其大小
FileTest的 exist?方法可以检测一个文件是否存在:
flag = FileTest::exist?("LochNessMonster")
flag = FileTest::exists?("UFO")
# exists? is a synonym for exist?
如果我们想要知道文件是否有内容,可以使用File::Stat的zero? 方法:
flag = File.new("somefile").stat.zero?
这个将会返回true,这是因为在ruby中0也是true ...
今天花了2各种头,看了一下programming erlang的前三章,由于自己对scheme和haskell都有一些了解,因此觉得语法方面,erlang和他们挺相似的.
顺便发下牢骚,emacs实在是用不习惯,可是vi的erlang插件实在是烂,郁闷..
这边只是一个简要的描述.
1整数
erlang里面的整数和scheme里面的是一样的都是允许任意长度的(只要不超出机器字长的限制):
3> 123456789 * 987654321 * 112233445566778899 * 998877665544332211.
如果你想指定一个数字的进制,你可以这样做:
4> 1 ...
1 打开和关闭一个文件
类方法File.new 打开一个文件,并将它实例化为一个File对象,他的第一个参数是文件名.
可选的第二个参数叫做 mode string(这个也是从c得来的).他的意思是怎样打开一个文件(读,写或者其他的).默认是'r'(也就是读).
file1 = File.new("one") # Open for reading
file2 = File.new("two", "w") # Open for writing
另外一种new的形式是三个参数的,其中第二个参数是指定了这个文件的原始的 ...
Enumerable 模块是一个很重要的模块,ruby中的很多类都有mix这个模块,比如array,hash等等。因此如果你想要自己定义一个collection,则不要继承一个存在的collection,而是应该mix Enumerable 模块。
数组是最常用,最有代表性的mix Enumerable模 ...
还差半各种头2007就过去了,总结下这一年:
sicp今年到底是没看完,还记得当时开始看的时候,信誓旦旦的一定要在今年看完,然后明年开始看算法导论,可是到了年末,sicp没看完,算法导论没开始看,倒是csapp看了4章了,python 就看了本python in nutshell,后来实在由于ruby的诱惑太大,投入了ruby的怀抱,学习rails的过程中,感觉自己的js,css水平是在太烂,明年要加强了.erlang看了一段时间,不过始终看不进去,现在对lisp的兴趣倒是非常大的说。今年自己后半年,基本上在家里就是用ubuntu,基本上已经习惯了linux,不过对ubuntu实在是郁闷,7. ...
- 2007-12-31 23:54
- 浏览 2427
- 评论(3)
1创建一个hash
就想创建一个数组一样,我们能够使用Hash的[]方法来创建一个hash:
puts a1 = Hash.[]("flat",3,"curved",2)
puts a2 = Hash.[]("flat"=>3,"curved"=>2)
puts b1 = Hash["flat",3,"curved",2]
puts b2 = Hash["flat"=>3,"curved"=>2]
pu ...
- 2007-12-30 12:01
- 浏览 3442
- 评论(2)
原文在这里: http://programming.reddit.com/info/63tnv/comments/c02qx55
Latent typing是一种你不需要在源码中的明确的声明你的变量的类型的类型系统.而与之相反的是manifest typing,它需要你在源码中明确的声明你的变量的类型。
Static typing类 ...
- 2007-12-29 00:53
- 浏览 4172
- 评论(1)
nnd,bug超多,速度超慢..现在每次进去桌面之前,都要等几分钟。切换个桌面就直接挂掉,真是失望,而且软件更新的速度也很慢,erlang的新版本都出来多久了,还不更新。准备下次鼓捣鼓捣gentoo了...
- 2007-12-27 23:17
- 浏览 2357
- 评论(5)
1 创建和实例化一个数组
类方法[]能够创建一个数组,这里有3种方法使用[]来创建一个数组:
a = Array.[](1,2,3,4)
b = Array[1,2,3,4]
c = [1,2,3,4]
这里还有一个方法叫做new也可以创建一个数组,它可以接受0,1或者2个参数,第一个参数是数组的大小,第二个参数是数组中每一个元素的默认值。
d = Array.new # Create an empty array
e = Array.new(3) # [nil, nil, nil]
f = Array.new(3, &qu ...
- 2007-12-27 00:41
- 浏览 3987
- 评论(0)
1 1个简单的数字区间我们能这样表示:
digits = 0..9
scale1 = 0..10
scale2 = 0...10
其中..包括结束点,...不包括结束点,也就是说digits和scale2的表示范围是一样的.
在ruby中,不只是数值可以用作区间,任何ruby对象都可以用作区间。可是并不是所有的表示都有意义或者有用。
接下来让我们来看看怎么操作区间:
2 开区间和闭区间
就像上面说的,..是闭区间,...是开区间:
r1 = 3..6 # closed
r2 = 3...6 # open
a1 = r1.to_a # [3,4,5,6 ...
- 2007-12-23 17:27
- 浏览 2528
- 评论(0)
1 symbols简介
在ruby中一个symbol就是一个Symbol类的实例,他的语法也就是简单的一个冒号后面跟着一个声明.
一个symbol就像一个字符串,可是它和字符串所不同的是每一个symbol都只有一个实例。我们举个例子:
array = ["foo", "foo", "foo", :foo, :foo, :foo]
在这个例子中字符串"foo"在内存里面被存储为3个不同的对象,而:foo则是被存储为一个对象,只不过是多个引用而已。
在ruby1.6之前的版本,一个symbol不是一个first ...
- 2007-12-23 02:12
- 浏览 2459
- 评论(0)
1定积分的计算
我么可以使用Riemann sum来计算积分:
def integrate(x0, x1, dx=(x1-x0)/1000.0) #也就是求一个函数在x0到x1区间的积分
x = x0
sum = 0
loop do
y = yield(x)
sum += dx * y
x += dx
break if x > x1
end
sum
end
def f(x)
x**2
end
z = integrate(0.0,5.0) {|x| f(x) }
puts z, " ...
- 2007-12-20 22:56
- 浏览 3075
- 评论(0)