• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Ruby術語集

    發布: 2007-7-04 20:03 | 作者: admin | 來源:  網友評論 | 查看: 17次 | 進入軟件測試論壇討論

    領測軟件測試網 A AWK

    由Alfred Aho(A)、Peter Weinberger(W)和Brian Kernighan(K)共通創建的一種小型腳本語言。

    B blade

    ml archive (blade/ruby)

    C Coerce

    進行數據類型變換的方法。如果某數值計算方法從參數那里獲得了一個類型不明的實例時, 它會調用coerce方法來進行數據類型變換。coerce方法會返回參數中的數值和本身。

    Ruby庫的數值類型變換順序為

    Fixnum -> Bignum -> Rational -> Float -> Complex D Data

    該類可將C中的指針處理成Ruby對象。由C指針、mark函數和free函數構成。如果您想使用C語言來擴充Ruby的功能的話, 就必須掌握該類的使用方法。相反地, 如果您沒有這個打算的話, 它也就沒什么用了。

    defined?

    該操作符可以檢查某對象(表達式)是否已經被定義。若未被定義就返回nil,若已被定義,就以字符串形式返回它的種類。雖然defined?看似一個方法,實際上它是Ruby語法中的操作符, 它不會對參數進行計算。因此下面的表達式

    defined? print("abc\n")

    不會輸出任何內容。

    E Eiffel

    面向對象的編程語言。據說,早先matz在讀了該語言作者所撰寫的《Object-oriented Software Construction》之后頓覺恍然大悟。但奇怪的是Ruby與Eiffel卻并不相似。如果硬要找出雷同之處的話, 可能只有兩點: 1.Ruby的塊以end結尾;2.Ruby也有rescue這個保留字。

    end

    該保留字表明了塊的結束。據統計,大約有33%的人在看到這個end時會聯想起Pascal(純屬杜撰)。但它并不和begin連用,因此它可能更接近于Ada或Eiffel。

    Ruby之所以不使用C和Perl中的{},主要是因為以下原因

    避開單句·復句的問題

    例如在C語言中, 若想向下例中添加語句時

    if (a==b) c();

    如果寫成這樣的話

    if (a==b) c(); d();

    就會造成難以發現的bug。即使是Pascal也存在這個問題。

    回避else的問題

    與上例類似, 如果寫出下面這樣的語句的話

    if (a==b) if (c==d) foo(); else bar();

    就會引起混亂。其實它的本意應該是

    if (a==b) { if (c==d) foo(); else bar(); }

    這個樣子。

    提高可讀性

    可能您對此持有異議, 但有的人認為:用end來結束塊的做法可以提高程序的可讀性。

    begin和case語法表達上的問題

    說句實話,matz曾多次想把end用作變量。甚至探討過在ruby語法中添加{ }的問題,但因為無法完美地解決begin和case的語法表達的問題,最終不得不放棄這個念頭?峙逻@才是最大的理由吧。

    ENV

    該對象的運作方式與訪問環境變量的Hash相同。實際上,它就是添加了特殊方法的Object類的實例。使用該對象來修改環境變量后,其變化將會影響到Ruby的子進程。

    F FAQ Frequently Asked Questions

    常見的問題和解答。Ruby FAQ尚處于不斷完善的階段,問題和解答是隨時更新的。

    G goto

    Ruby中沒有該語句。這并不是因為“我們覺得不應該使用”goto,而是“實現其功能實在是太麻煩了”。實際上,您可以使用catch/throw或異常來實現goto的功能。

    H I J JARH Just another Ruby hacker, K L M main

    頂層中的self。因為self是必不可少的,所以它只是表明在頂層中有個Object類的實例--self而已。另外為了操作Object類,還特別定義了若干特殊方法。

    已定義的特殊方法

    private public include matz

    Ruby的作者,也叫松本 行弘。請參考<URL:http://www.st.rim.or.jp/~fuku/cmail/>,另外,他還是3個孩子的父親。

    Mix-in 混合插入、糅合

    就像在冰淇淋中混合多種配料可以做成美味的混合冰淇淋一樣,在類中混合插入各種模塊就可以添加相應的功能。請參考繼承。

    matz堅信濫用多重繼承會導致繼承關系的混亂,因此Ruby中不允許使用多重繼承。同時為充分發揮繼承功能的優勢,Ruby支持兩種繼承關系:1.使用is-a語句的繼承;2.使用Mix-in來共享并繼承模塊中的功能。

    N O P Perl

    不必多說了罷

    POLS

    Principle of least surprise

    Python

    Ruby的勁敵。其功力深厚,可謂“千年蛇妖”。但matz認為Python的功能仍不完美,不然就不會創造Ruby了。最要命的是Python限定了名稱長度(6個字符)。

    Q R RAA

    Ruby Application Archive(RAA)

    RCR

    Ruby Change Request

    RD

    Ruby Document

    Ruby

    面向對象的腳本語言。Ruby的意思是“緊跟在Perl(pearl是6月的誕生石,Ruby則是7月的誕生石)之后”。Ruby并不是其他單詞的縮寫。

    S Sather

    面向對象的編程語言。其實matz鐘愛Sather勝過Eiffel。但Ruby與Sather一點都不像。

    self

    表示被調的表達式。那為什么把它叫做self呢?因為如果把方法看作動詞的話,那么被調就是該動作的主語,從方法的角度來看,被調當然就是自己了。一般人認為,Ruby對此并未深究,只不過是模仿Smalltalk的做法罷了。

    Smalltalk

    面向對象的編程語言。它奠定了現代面向對象 理論體系的基礎。

    super

    在重定義的方法中調用上級方法。省略參數時,將使用主調方方法的參數來進行調用。

    問題:

    修改參數中給出的數值后再調用super的話,將會使用原來的值還是修改后的值呢?

    def foo(a) print a end def self.foo(a) a=25 super end foo(5) # 5 or 25??

    答案:

    使用修改后的值(25)

    T Thread

    原為Thread of control的縮略語,意指一系列的控制流。在Ruby中,一個程序內可以同時存在若干線程。

    U undef

    將方法設置為未定義狀態。繼承 和Mix-in的功能都是在類中添加方法,而undef則可以取消方法。但是,如果取消了類所必需的方法(被其他方法所調用的方法)的話,其后果不堪設想。

    V W X Y Z
    --按拼音排序 A B 被調 Receiver

    方法的執行主體。也就是方法調用表達式的`.'中的左邊部分。在方法內,可以使用self來表示它。另外,您可以使用@變量名的形式來訪問被調的實例變量。

    變量 Variable

    貼在對象上的標簽。Ruby的變量包括全局變量、局部變量和實例變量。因為常數的值不能改變,所以不是變量。但它也是一種標簽,因此在這一點上它與變量是相同的。

    C 常數 Constant

    一旦定義了就不能再改變的變量。這個定義本身似乎就有點矛盾。

    重定義 Override

    即指再定義。重新定義超類或include模塊中已經定義的方法。使用super即可調用原來的方法。

    抽象數據類型 Abstract Data Type

    將數據構造和對其進行操作的過程封裝在一起,就形成了抽象數據類型。對抽象數據進行操作時,必須使用封裝內的操作才行。其結果是不能從外部直接使用數據構造,同時一旦內部構造發生變化也不會對外界造成不良影響。我們把這個過程叫做封裝。

    初始化 Initialize

    使對象(或“某事物”)變為“就緒”狀態。對實例進行初始化操作時,需要重定義Object#initialize方法。類方法Class#new的默認定義就是對新生成的實例執行initialize方法。傳給new的參數會被原封不動地傳給initialize。另外,若帶塊調用時,該塊會被傳給initialize。

    因此,不必對Class#new進行重定義。

    辭典 Dictionary

    根據給出的條目即可查出對應的定義。它是哈希表的別名。面向對象的始作俑者Smalltalk把類似哈希表的數據構造稱作“辭典”,所以時至今日仍然有一些人把哈希表稱作辭典。

    D 大Endian Big Endian

    美洲大陸的原住民是Indian而并非Endian,那么這個Endian的詞源是什么呢?其實它出自Jonathan Swift寫的《格列佛游記》。這本書中的人們因為吃雞蛋的方法不同而分成兩類,從圓頭開始吃的叫大Endian,從尖頭開始吃的叫小Endian。在計算機業界,該詞表示CPU等排列數據的一種方式,據說網絡一族的人們喜歡大Endian。請參考字節順序。

    大規模退出 Non-Local Exit

    它并不是那種發生在break, next, redo, retry, return等方法的范圍內的普通退出,而是一種跨度極大的退出。只要沒被捕捉到,它甚至會跳出方法調用的牢籠來引發中斷。Ruby的大規模退出包括由異常引起的退出和catch/throw。

    大多數的異常(包括由exit所引發的SystemExit在內)都會被rescue 捕捉到。但是若該異常不值得捕捉(例:內存分配失。忉屍鞯腷ug)的話,就會放他一馬。

    在catch/throw中,通常會從被throw的地方起一直跳轉到與throw部分具有相同標簽的catch部分為止。

    迭代器 Iterator

    即指調用帶塊方法。當初為了進行迭代操作而設置了帶塊方法,現在它仍然常被稱作迭帶器。雖然可以將那些進行迭代操作的方法叫做迭代器,但如果將所有帶塊方法的調用過程都看作迭帶器的話,勢必會引起混亂。

    調用帶塊方法

    我們把那些可接受代碼段(塊)的方法叫做帶塊方法。調用帶塊方法就是指調用這些帶塊方法的過程。

    在帶塊方法中使用yield就可以執行塊的內容。

    當然了,如何處理給出的塊,這完全取決于方法。所以,如果硬是把塊傳給一個不能帶塊的方法的話,也不會有什么結果,而且也不會發生錯誤。

    動態綁定 Dynamic Binding

    指在運行時根據操作對象的數據類型的不同來選擇合適的過程(方法)。它可以提高程序的靈活性。它是面向對象的必要條件之一。在Ruby中變量是沒有類型的,因此必然可以進行動態綁定。

    動態局部變量 Dynamic Local Variable

    它是一種特殊的局部變量。Ruby的局部變量的作用域是固定的,因此在編譯時就會生成局部變量。動態局部變量則有所不同,每次執行時才會生成變量。在塊中首次被賦值的局部變量就是動態局部變量,其作用域僅限于塊的內部。這主要是為了讓各個Thread都能擁有自己獨立的變量而設的。

    對象 Object

    即指物體。舉個例子,“愛”可能不是對象,但“情書”卻是對象。甄別某事物是否屬于對象,這可能是個哲學問題;蛟S正因為如此,面向對象也變得撲朔迷離起來。在計算機業界有人認為對象就是指內存中的特定空間。到底何謂對象,還真是個難題。另外,請參考封裝和抽象數據類型。

    多態 多態, Polymorphism

    根據對象的不同選擇合適的操作。在Ruby中的實現方法是,根據被調的對象的不同來選擇不同的方法。

    obj = "abc" print obj.length, "\n" # => 3 obj = [1,2,3,4] print obj.length, "\n" # => 4 F 方法 Method

    對對象進行的操作。操作對象(被調)以self來表示。在Ruby中,除去內部類的對象以外,通常對象的構造都是動態確定的。某對象的性質由其內部定義的方法所決定。

    封裝 Encapsulation

    將內部結構和算法隱藏起來,以確保只有特定的過程(也叫方法)才能直接操作數據,這種隔離方法就叫做封裝。請參考抽象數據類型。

    在Ruby中,只有方法可以操作實例變量,因此可以說Ruby中的封裝是強制性的。

    G 關聯數組 Associative Array

    哈希表的別名。因為哈希表可以使用任意的鍵來引出值,這就是“關聯”特性。另外,可以將哈希表看作是使用非數字形式索引的數組,這是它的“數組”特性,因此它也叫做“關聯數組”。以前是使用硬件來實現關聯數組(也叫關聯記憶)的功能的,但是隨著計算速度的攀升以及關鍵算法(叫做“哈希表”,它是現在的哈希表的詞源)的成功研發,現在只用軟件就可以實現其功能了。

    H 哈希表 Hash

    Ruby中的一種從鍵到值的映像(mapping)。也叫做關聯數組或辭典。哈希表之所以得此名,是因為在實現其功能時使用了一種叫做“哈希表”的算法。哈希的意思是“切碎”,是“hashed beef”中的“hash”。

    函數 Function

    嚴格地講,Ruby中沒有函數。但那些省略被調的方法調用看來確實很像函數,而且有的方法根本不需要self或實例變量等被調信息,事實上后者已成為函數了。所以有時也就網開一面地把這樣的方法叫成函數了。

    通常將這種函數(式的方法)的方法可視性設成了private,這樣就只能以省略被調的形式來調用它們了。這類方法中比較有代表性的是 模塊函數。

    環境變量 Environment Variable

    父進程傳給子進程的值。使用ENV就可以訪問環境變量。傳給子進程只是環境變量的副本,因此子進程無法通過環境變量來向父進程傳遞信息。這就好比老子不會聽小孩的話一樣。

    J 繼承 Inheritance

    主要依賴于從祖先或親戚那里繼承的功能,而自己只做一些補充性的工作。在現實世界中,這種行為是要遭到唾棄的,但在計算機世界里這卻是個很經濟的做法。繼承也可以指在某類中添加新功能后生成一個新的類。繼承可以用is-a的關系來加以詮釋。例如,如果您要生成一個“理科學生”類的話,需要首先繼承描述一般學生特征的“學生”類,然后再添加“整天忙于應付實驗”等特征后即可生成該類。若不存在is-a關系,而只想共享某些特性或功能時,我們推薦您使用Mix-in。

    腳本 Script

    腳本,特指由解釋器進行處理的較短的程序。當然了,其中也不乏大作。

    腳本語言 Script Language

    腳本語言。

    局部變量 Local Variable

    只能在特定范圍內使用的變量。該范圍就是作用域。Ruby的作用域包括

    程序整體 類·模塊定義 方法定義 塊

    幾種。只有塊能訪問外側作用域的局部變量。局部變量的作用域 從該變量首次被賦值的位置起 直到該賦值位置所在的作用域結束為止。這個優先范圍是靜態決定的,與具體的運行情況無關。

    K 塊 Block

    可用來構成循環或打家劫舍。

    L 類方法 Class Method

    就是類的方法?煞譃閮煞N:第一種是在所有的類的超類Class中定義的,且被所有的類所共享的方法;第二種是各個類所特有的特殊方法。這倒沒什么問題。重要的是類方法中的self指的是類本身,這點需要牢記。

    立即值 Immediate Value

    實際的數值就保存在變量之中,這和引用是不同的。目前,Ruby中只有Fixnum、Symbol和nil/true/false是立即值。然而Ruby的某些版本并未將Fixnum算做立即值,這也無關緊要。在理論模型層面上,可以將所有的值都看作是對某對象的引用。

    理論體系 Paradigm

    類似于“思維方式”,這個詞很難說得清楚。

    M 面向對象

    以對象為中心的理論體系。英語中的"Object-Oriented"是個形容詞,可是到了日語中就變成名詞了。似乎只要將對象置于思考的中心點就萬事大吉了,但也要兼顧一下幾點

    繼承 封裝

    多態

    (或者動態綁定)

    有人甚至把它看作是包治百病的“魔法”,但事實上世界并非如此簡單。面對對象概念誕生至今已逾20個年頭,它已經磨礪成為一把實用的利劍。

    面向對象設計 Object-Oriented Design

    以對象作為出發點的系統設計

    面向對象編程 Object-Oriented Programming

    以對象作為編程的中心。

    面向對象分析 Object-Oriented Analysis

    以對象為根本的系統分析。

    模塊函數 Module Function

    在那些函數式的方法中,模塊函數既可用作模塊的方法,又可用作特殊方法。例如Math模塊中的大部分方法都是模塊函數。您既可以這樣

    Math.sqrt(2)

    又可以這樣

    include Math sqrt(2)

    來使用它們。

    N 內部類 Built-In Class

    這些內部類被嵌入Ruby解釋器內部,其實例的結構與普通對象有所不同。我們不建議您繼承內部類。Ruby的內部類如下所示(實際上遠不止這些,更多詳情請參考內部類/模塊/異常類)

    Array Bignum Class Data FalseClass File Fixnum Float Hash IO MatchData Module NilClass Proc Regexp String Struct Thread TrueClass P 排序 Sort

    將對象依次排列。只要元素是可數的(include了Enumerable)、且已定義了順序(定義了<=>)的話,Ruby就可以對這些元素的集合進行排序。這并不僅限于數組,也適用于其他復雜對象的集合。

    破壞性的 Destructive

    因為String#chop!, Array#concat這種方法會直接改變被調的狀態,因而會產生“破環性的作用”。不過您不必擔心,因為它們不會損壞您的計算機。

    Q 全局變量 Global Variable

    在程序的各個角落中都可以使用的變量。比較危險,少用為佳。

    R S 實例 Instance

    即指對象。在強調對象歸屬于某類時,常使用實例這個詞。據說有好多人因為不了解對象和實例的關系,因而搞不懂面對對象到底是怎么一回事兒。

    實例變量 Instance Variable

    對象所特有的變量。Ruby實例變量名前都有一個@符號,您只能在方法內部使用它。

    T 特殊方法 Singleton Method

    專屬于某特定對象的方法。請參考方法。在下列情況下,其他對象也可以繼承該特殊方法。

    Kernel#clone時 定義了子類時

    若在特殊方法中重定義了原先類中的方法時,可以使用super來調用原來的方法。

    特殊類 Singleton Class

    只對應于某特定對象的假想類。

    W 文檔 Document

    matz最頭疼的就是寫文檔了。他平時總是說“源代碼就是文檔。連bug也寫得清清楚楚”,當然了誰都不以為然。

    X 小Endian Little Endian

    開始有10個人,后來越來越少。在計算機業界中,它是表示一種排列數據的形式。據說有一家大的CPU制造商很喜歡小Endian。請參考字節順序。

    Y 異常 Exception

    遇到非正常情況就會引發異常。發生異常時,只要沒使用begin中的rescue進行捕捉的話,它將跨越方法調用的阻攔,進而中斷程序(thread)的運行。有了異常處理功能之后,我們就不必再逐一檢查Ruby程序中的每個異常情況了。發生異常的地點信息被保存在$@中,而異常本身的信息被保存在$!中。

    Z 再定義 Redefinition

    即指重定義。

    字節順序 Byte Order

    將0x01020304這4個字節數據按照1,2,3,4或是4,3,2,1的順序排列。前者叫做大Endian,而后者叫做小Endian。人們一直在爭論哪種方法更好,但至今尚無定論。

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>