Time of Update: 2017-02-27
如果在一個model對象中有一個名為balance的屬性,你可以通過索引操作符來擷取該屬性的值,你可以使用一個字串或者標記,在這裡我們使用標記,例如:account[:balance] #=> 擷取值account[:balance] = 0.0 #=> 設定值但是這種常見的代碼是不提倡的,更好的是這樣,利用ruby的存取方法:account.balance #=> 擷取值account.balance = 0.0
Time of Update: 2017-02-27
最近在做的一個ROR的web項目中遇到如下問題:產品可以按類分類導航瀏覽,主要可以分為A,B,C三類,三類之下還有其他分類,同時,基類和其下 的分類都可以由使用者擴充。從橫向上,主類可以由使用者擴充,縱向上,使用者也可以擴充。類別資訊儲存與categories表中:id:integer 主鍵name:string 類別名稱parentid:integer
Time of Update: 2017-02-27
多態在java中是如何定義的?我這樣理解:多態需要藉助介面來實現,就是所有實現了該特定的介面的類用起來都象他。什麼是duck type?在Programming Ruby中這樣定義:如果對象能夠象鴨子那樣行走,象鴨子那樣呱呱叫,那麼解譯器會很高興的把它當做鴨子來對待的。(Programming Ruby 中文版
Time of Update: 2017-02-27
輸入輸出在所有的本系列文章中,在編寫Ruby代碼時都使用了大量的Ruby標準輸出方法。其中,最為常用的是print和puts方法,有關其使用細節不再贅述。所有這些和其它處理輸入和輸出的方法都定義於Kernel模組中。這個Kernel模組又被包含在Object類中。因此,Kernel的方法出現在每一個對象中。在輸出方面,Kernel定義了print,printf,putc和IO類和兩個子類(File和BasicSocket)-它們允許讀寫檔案和通訊端。BasicSocket是通訊端庫的一部分並且將
Time of Update: 2017-02-27
全域變數由$開頭.它們可以在程式的任何位置訪問到.在初始化前,全域變數有一個特殊的值 nil.ruby> $foonilruby> $foo = 55ruby>
Time of Update: 2017-02-27
這章我們將討論更多的Ruby流程式控制制.case我們用case語句測試有次序的條件.正如我們所見的,這和C,Java的switch相當接近,但更強大.ruby> i=8ruby> case i| when 1, 2..5| print "1..5\n"| when 6..10| print "6..10\n"| end6..10nil2..5表示2到5之間的一個範圍.下面的運算式測試 i 是否在範圍內:(2..5) === icase
Time of Update: 2017-02-27
簡介:Ruby 是一門靈活的動態程式設計語言。GTK2 是開源的跨平台影像處理庫。通過Ruby-GTK2 進行快 速的 Linux 案頭圖形應用開發。介紹Ruby-GTK2 是 GTK+ 的 ruby 綁定。Ruby 與 GTK2 的結合,帶來了新的 GUI 開發方式。GTK(GIMP Toolkit) 是一套跨多種平台的圖形工具包,按 LGPL 許可協議發布的。雖然最初是為 GIMP 寫的,但目前已發展為一個功能強大、設計靈活的一個通用圖形庫。特別是被 GNOME 選中使得 GTK+ 廣
Time of Update: 2017-01-18
註:Ruby Windows安裝包請前往http://rubyinstaller.org/下載安裝。安裝了個Ruby193,寫了第一個Ruby程式,來記錄下自己學習點滴。首先在Ruby的建立個檔案夾Sample,再新添加個檔案,名字HelloWorld.rb內容就是:複製代碼 代碼如下:puts "Hello,World!" 當然也可以先聲明變數,如後再用puts語句複製代碼 代碼如下:a = "Hello,World!" puts a 當然也可以先寫個函數,
Time of Update: 2017-01-18
1.try 永遠不會拋出異常 在 沒有的時候 返回 nil 複製代碼 代碼如下:province_id = Province.find_by_name(prov).try(:id) 2.find(:first, :condotions) 方法 不言而與複製代碼 代碼如下:mobile_info = MobileInfo.find(:first, :conditions => ["mobile_num = ? ", mobile_num.to_i])
Time of Update: 2017-01-18
Ruby提供了兩個存取層級的網路服務。在一個較低的水平,可以訪問底層的作業系統,它可以實現連線導向和無連線協定的用戶端和伺服器支援基本的socket。Ruby也具有程式庫,提供更進階別的訪問特定的應用程式級的網路通訊協定,如FTP,HTTP等。這篇教程介紹 Ruby Socket編程概念及講解一個簡單的執行個體。
Time of Update: 2017-01-18
Ruby提供了一套完整的I/O相關的核心模組中實現方法。所有I/O方法來自IO類。類IO提供了所有的基本方法,如 read, write, gets, puts, readline, getc 和 printf.本章將涵蓋所有可供在Ruby中使用的基本I/O功能。如需使用更多的功能,請參考Ruby的IO類。puts 語句:在前面的章節中,你指定值的變數和然後使用聲明 puts 輸出。puts 把語句指示程式顯示儲存在變數值。這將添加一個新行,每行末尾寫出(輸出)。例子:#!/usr/
Time of Update: 2017-01-18
雜湊鍵 - 值對的集合,類似這樣:"employee" => "salary"。它類似於數組,除了索引是通過任意鍵的任何對象的類型,而不是一個整數索引。順序遍曆一個雜湊鍵或值要麼可能看起來是任意的,一般不會在插入順序。如果訪問的鍵的雜湊值不存在,該方法將返回nil。建立雜湊:使用數組中,有各種各樣的方法來建立雜湊值。可以 new 類方法建立一個空的hash :months = Hash.new還可以使用 new 建立雜湊,這是一個預設值,否則只是 nil:複製代碼 代碼如下:months
Time of Update: 2017-01-18
1. 快速擷取Regex的匹配值通常我們使用Regex,都是先match,然後再取結果,但是這樣有時候會拋異常,看下面例子:複製代碼 代碼如下:email = "Fred Bloggs "email.match(//)[1] # => "fred@bloggs.com"email[//, 1] # => "fred@bloggs.com"email.match(/(x)/)[1] # => NoMethodError [:(]email[/(x)/, 1] # =>
Time of Update: 2017-01-18
一元操作大家都知道,就是運算式的操作符只有一個輸入值。這個在C和Java中都很常見。今天我們要探討一下Ruby中的一元操作符重載。一元操作符有:+ – * ! & 等,為了避免與數值的 + – 混淆,重載一元操作符,要在後面加上一個 @ 操作符。1. 一個簡單的一元操作符重載例子:-@ 操作符我們以String類為例子。String預設沒有定義 – 操作符:複製代碼 代碼如下:1.9.3p125 :027 > a = "Hello"=> "Hello"1.9.3p125 :028 &
Time of Update: 2017-01-18
Iterator定義A Ruby iterator is simple a method that can invoke a block of code. Block 一般是跟著 method 出現的, 並且 block 中的代碼不一定會執行 如果 method 中有 yield, 那麼它的block 中的代碼會被執行
Time of Update: 2017-01-18
ruby判斷一個數是否為質數質數又稱素數。一個大於1的自然數,如果除了1和它自身外,不能被其他自然數整除的數;(除0以外)否則稱為合數 。根據算術基本定理,每一個比1大的整數,要麼本身是一個質數,要麼可以寫成一系列質數的乘積;而且如果不考慮這些質數在乘積中的順序,那麼寫出來的形式是唯一的。複製代碼 代碼如下:def prime?(num) res = [1] res << num if num == 0 || num ==
Time of Update: 2017-01-18
在老版本的Ruby中,指派陳述式的傳回值是設定該屬性的方法的傳回值。在Ruby1.8中,指派陳述式的值總是參數的值而方法的傳回值將被丟掉。 class Test def val=(val) @val = val return 99 end end t = Test.newa = t.val=2a
Time of Update: 2017-01-18
網站不再單單迎合人類讀者。許多網站現在支援一些 API,這些 API 使電腦程式能夠擷取資訊。螢幕抓取 —— 將 HTML 頁面解析為更容易理解的表單的省時技術 — 仍然很方便。但使用 API 簡化 Web 資料提取的機會在快速增多。根據 ProgrammableWeb 的資訊,在本文發表時,已存在 10,000 多個網站 API — 在過去的 15 個月中增加了 3,000 個。(ProgrammableWeb 本身提供了一個 API,可從其目錄中搜尋和檢索
Time of Update: 2017-01-18
最近把玩 Ruby,不錯的說,很有感覺;在一台老機器上面裝了 openSUSE 12.3,然後使用 rvm 安裝了 ruby,其實任何好的發行版打包的 ruby 都不如使用 rvm 安裝的 ruby,親身感受(不服來辯)。然後,使用 gem 安裝一些軟體的時候,會出現如下的錯誤:複製代碼 代碼如下:`no such file to load -- openssl (LoadError)`原因很簡單就是 ruby 的 openssl 支援模組沒有安裝,在 openSUSE 下面安裝:複製代碼
Time of Update: 2017-01-18
Range是範圍對象的類,定義的時候可以使用範圍操作符“..”或者“...”,“..”產生的範圍對象包括起點和終點,“...”產生的範圍對象不包括起點和終點,範圍是由是一序列有順序、有規律的元素對象組成,任何有順序,有規律的一組對象,都可以用Range對象來定義,如數字、字母、字串、甚至時間1、Range對象的定義複製代碼 代碼如下:r1=1..5