Range对象表现为一个间隔,有开始与结束的值集。Range对象可以由范围操作符s..e及s…e字面值,或者用Range::new构建。由..操作符构建的Range对象包括范围的终点end值,而由…操作符构建的Range对象不包括范围的终点end值。当用于迭代器对象时,Range对象返回序列内的每一个值。 例如: for i in 1..5 … end 生成从1到5的Range对象,然后对分别每个值进行迭代操作。 再如: (-1..-5).to_a #=> [](-5..-1).to_a #=> [-5, -4, - ...
J2EE app 一般都有用到 xDoclet 做一些宣告然後再產生程式碼. Java 1.5 開始支援 Annotation 功能來解決這方面需要. 其實 Ruby 拜本身就是 dynamic 語言之賜, 它這方面的方法可就高明多了, 這也就是為何 Rails 看起來又像是 metaprogramming 的原因. 請參考這篇說明, Metaprogramming Ruby Ruby 不用 setXXX, getXXX, 而是用稱為 attribute accessor 這種方法. class Book def initialize(title) ...
MD5 計算 require 'digest/md5' puts Digest::MD5.hexdigest("Hello World!") 計算檔案的 MD5, 可以確保檔案未曾被修改 require 'digest/md5' #method 1 puts Digest::MD5.hexdigest(File.read("o.rb")) #method 2 class Digest::MD5 def self.open(path) o = new File.open(path) { |f| buf = "" ...
Ruby 的 block 是個不錯的設計. 一個 block 就是一些程式碼, 其 context 為正在動態執行的環境. 有點像是一般稱為 callback 機制, 但 block 方法精巧多了 當你呼叫 method 時, 你可以給它一個 block. 下面 “each” 是 method, do ~ end 中間就是 block, |x|, x 就是傳給 block 的參數. books = ["Ruby", "Rails"] books.each do |b| puts b end 那麼 method 裡如何執行 block? 利用 “yield” ...
URL重写技术在今天已不是什么新鲜的话题了,在Apache服务器提供了名为mod_rewrite的URL重写模块,而在IIS服务器上,也有很多商业的ISAPI 筛选器模块可供使用。然而这对于我们,没有很多的资金或使用的共享服务器,使得以上的方法都不是最佳的解决方案。幸而ASP.NET给我们提供了强大的可扩展性,能让我们自己定义页面的访问规则,很方便实现URL重写。 在ASP.NET中实现URL重写,需要创建HTTP模块(HttpModule)或HTTP处理程序(HttpHandler),通过调用HttpContext的RewritePath方法来近进行URL重写。本篇文章使用的是HT ...
litoueva
搜索本博客
最近加入圈子
存档
最新评论