Time of Update: 2017-02-27
Ruby的標準類型:A.數字class Test 3.times { print "X " } 1.upto(5) { |i| print i, " " } 99.downto(95) { |i| print i, " " } 50.step(80,5) { |i| print i, " " } a = "23" b = "34" puts "
Time of Update: 2017-02-27
1.再談ruby數組。 class Test a = [1, 3, 5, 7, 9] puts a[0] #----->1 puts a[-2] #----->7 puts a[1, 3] #----->[3, 5, 7] puts a[-3, 2] #----->[5, 7] puts a[1..3] #----->[3, 5, 7] puts a[1...3] #----->[3, 5] a[2] = 'cat' #--
Time of Update: 2017-02-27
1. 成員變數的讀寫屬性: attr_reader 和 attr_writer class Test def initialize(name) @name = name end attr_reader :name attr_writer :name end test = Test.new("AAA") puts test.nametest.name = "BBB"puts
Time of Update: 2017-02-27
Ruby語言中的String是mutable的,不像java、C#中的String是immutable的。比如str1="abc"str2="abc"在java中,對於字面量的字串,jvm內部維持一張表,因此如果在java中,str1和str2是同一個 String對象。而在Ruby中, str1和str2是完全不同的對象。同樣,在java中對於String對象的操作都將
Time of Update: 2017-02-27
微軟的IronRuby項目為Windows平台帶來了強大的動態語言,Ruby程式設計語言是一個現代的,物件導向的 基礎語言,它的文法靈感來自Perl和Smalltalk語言,它是由一名日本人松本行弘(外號Matz)發明的, 用他的話說,他是想發明一種語言比Perl更強大,同時比Python更物件導向的程式設計語言,在 “http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html”有一篇對松本行弘專訪文章,
Time of Update: 2017-02-27
我們都知道在編譯Ruby的時候你需要使用configure的 --disable-pthread參數。沒錯,在configure --disable-pthread 可以讓你得到大約 30% 效能提高。但是,這是為什麼呢?所有的這一些我們需要使用 strace
Time of Update: 2017-02-27
介紹這是一個短小的Ruby入門,完全讀完只需20分鐘。這裡假設讀者已經安裝了Ruby,如果你沒有安裝的話,請在閱讀文前訪問Ruby官方網站進行下載並安裝。互動Ruby開啟IRB(互動式Ruby外殼):如果你使用Mac OS X,那麼請開啟終端視窗輸入irb;如果你使用Linux,那麼請開啟shell輸入irb;如果你使用windows,那麼請在開始菜單中找到Ruby->fxri,並執行它。Ok,在開啟IRB之後,在其中輸入"Hello
Time of Update: 2017-02-27
Ruby有三類變數,一種常量和兩種嚴格意義上的偽變數(pseudo-variables).變數和常量都沒有類型.雖然無類型變數存在一定的缺點,但卻有更多的優點並很好的符合Ruby快速簡便(quick and easy)的哲學精神.在大多數語言裡,變數都必須指定其類型,可更改性(是不是個常數)和範圍;由於類型的不存在,剩下的東西也可由變數名字很快確定(你馬上會看見),在Ruby裡我們不需要變數聲明.由首字母標識符將其分類:$ 全域變數@ 實變數[a-z] 局部變數[A-Z]
Time of Update: 2017-02-27
1 rss 標準庫RSS 是基於xml的,因此你能簡單的將它作為一個xml來進行解析.可是,事實上他有一個更進階別的專 有的解析器來解析他.此外RSS的標準也很混亂。他有很多不便,就是標準的版本的不相容,RSS有0.9, 1.0, 和2.0的版本.RSS的版本,就像製造熱狗, 就是一些除非你一定要知道,否則你不想要知道的細節.ruby有一個標準RSS庫,它包含0.9,1.0和2.0版本標準.不同的版本之間儘可能做到了無縫處理.如果你
Time of Update: 2017-02-27
經常我們需要以一種更透明的方式來儲存和得到資料.Marshal模組提供了簡單的對象持久化,PStore 庫建立在這項技術之上。dbm 庫使用像hash一樣並永久的存貯在磁碟上.1簡單的Marshaling經常我們需要建立一個對象,然後為了以後的使用儲存它.ruby對這種對象持久化(或者說是 Marshaling)提供了基本的支援.Marshal
Time of Update: 2017-02-27
1 得到所定義的實體的列表ruby的反射api能夠使我們在運行時檢測類和對象。因此我們下面將會介紹Module, Class, 和Object 中的定義的一些方法。Module模組有一個constants 的方法,它將會返回系統中所有的常量名,包括類名和模組名。nesting 方法則是返回當前調用點上的嵌套的模組的列表.Ruby代碼list = Math.constants # ["E", "PI"] Module#ancestors
Time of Update: 2017-02-27
1 動態evaluate代碼全域的方法eval 編譯並且執行一段包含ruby代碼片斷的字串,這是一個很power的機制,因為它允 許你建造在運行時執行的代碼。看下面的例子:Ruby代碼parameters = {} ARGF.each do |line| name, expr = line.split(/\s*=\s*/, 2) parameters[name] = eval expr end假設輸出是這樣的:引用a = 1b = 2 + 3c =
Time of Update: 2017-02-27
1 把代碼像對象一樣儲存當你想要以對象的形式儲存一塊代碼的時候,ruby給了你幾種方法。下面我們會介紹Proc 對象, Method 對象和 UnboundMethod 對象.內建的Proc 類封裝ruby block到一個對象.Proc對象,像一個blocks,是一個閉包而且儲存了它定義
Time of Update: 2017-02-27
1 發送一條訊息給一個對象當你調用一個方法時,你也就是發送了一條訊息給一個對象,在ruby中我們能夠在運行時決定那個方 法被調用。send 方法就是做這個的,他接受一個symbol為參數.舉個簡單的例子,假設我們要寫一個排序,我們想要使用不同的域作為比較的key。雖然我們這時可以 用block,可是如果使用send的話,我們能有一個更優美的寫法:Java代碼class Person attr_reader :name, :age, :height def initialize(name,
Time of Update: 2017-02-27
1 檢測檔案是否存在及其大小FileTest的 exist?方法可以檢測一個檔案是否存在:flag = FileTest::exist?("LochNessMonster")flag = FileTest::exists?("UFO") # exists? is a synonym for exist?如果我們想要知道檔案是否有內容,可以使用File::Stat的zero? 方法:flag = File.new("somefile").
Time of Update: 2017-02-27
1 開啟和關閉一個檔案類方法File.new 開啟一個檔案,並將它執行個體化為一個File對象,他的第一個參數是檔案名稱.可選的第二個參數叫做 mode string(這個也是從c得來的).他的意思是怎樣開啟一個檔案(讀,寫或者 其他的).預設是'r'(也就是讀).file1 = File.new("one") # Open for reading file2 = File.new("two", "w") # Open for
Time of Update: 2017-02-27
1 理解allocate在一些特殊的環境中,你可能需要不調用它的構造器(也就是initialize)來建立一個對象。也就是說 你想要建立一個空的對象.例如,假設你有一個對象,它的狀態完全的由它的存取方法所確定,因此如果 你不是真的想要一個另外的狀態的話,調用new方法是沒必要的.此時我們能allocate方法.Ruby代碼class Person attr_accessor :name, :age, :phone def initialize(n,a,p) @name, @age, @
Time of Update: 2017-02-27
1
Time of Update: 2017-02-27
Ruby將字串像數字一樣處理.我們用單引號('...')或雙引號("...")將它們括起來.ruby> "abc""abc"ruby> 'abc'"abc"單引號和雙引號在某些情況下有不同的作用.一個由雙引號括起來的字串允許字元由一個前置的斜杠引出,而且可以用#{}內嵌運算式.而單引號括起來的字串並不會對字串作任何解釋;你看到的是什麼便是什麼.幾個例子:ruby> print "a\nb\
Time of Update: 2017-02-27
一個運行著的程式常會遇到意外的問題.一個要讀取的檔案不存在;當希望存入一些資料時磁碟滿了;用 戶可能輸入不恰當的資料.ruby> file = open("some_file")ERR: (eval):1:in `open': No such file or directory - some_file一個健壯的程式會合理並漂亮的處理這些問題.面對那些異常是一件討人厭的工作.C程式員被要求做到 檢查每一個可能導致錯誤發生的系統調用的傳回值並立刻做出決定.FILE