论坛首页 入门技术论坛

ruby常用方法小記 --Array篇

浏览 2900 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-08-21  
Class  Array < Object

實例方法

&
arr & other_array -> an_array

交集

<=>
arr<=>other_array-> -1,0,1

比較---根據數組小于,等于或大于other_array,分別返回-1,0或1。每個數組中的每個對象都被比較.如果任何值都不相等,那么這次比較多結果將作為返回值返回.如果所有值都相等,則返回值由數組長度的比較結果確定.因此,根據Array#<=>當且僅當兩個數組長度相同且對應元素分別相等時才認為它們相等

["a", "a", "c"] <=> ["a", "b", "c"] -> -1

[1, 2, 3, 4, 5, 6] <=> [1, 2] -> 1


collect!
arr.collect!{|obj|block}-->arr

對arr的每個元素調用block,并用block的返回值去替換原元素.參見

a = %w(a b c d )
a.collect!{|x| x + "!"}
a


compact!
arr.compact! -> arr 或 nil


刪除arr中所有的nil元素.如果沒有改變內容,則返回nil

a = ["a", nil, "b", nil, "c", "d"]
a.compact
a
a.compact!
a


each_index
arr.each_index{|index|block} -> arr

除了傳遞到是元素的下表而不是元素本身之外,與Array#each相同

flatten
arr.flatten->an_array

返回一個新數組,該數組由原數組元素(遞歸)平鋪而成.

a = [1, 2, 3, 4, 5, 6]
t = [4, 5, 7, 9]
b = [a, t, 6,7,8]
b.flatten


include?
arr.include?(obj)->true或false

如果所給對象出現在數組中(也就是說如果數組的任何對象 == obj),則返回true,否則返回false.
a = %w(a, b, c)
a.include("b") -> true
a.include("g") -> false


join
arr.join(sqparator=$,)->str

將數組中的每個元素連接成一個字符串,使用分隔符來分割每個元素,并返回該字符串.
%w(a b c).join 
=> "abc"
%w(a b c).join("囧") 
=> "a囧b囧c"


pack
arr.pack(template)->binary_string


根據模板template中的指令將arr的內容打包成二進制字節序.指令A,a和Z后跟一個計數符,該計數符說明了生成字段的寬度.其余的指令也可以后跟一個計數符以表明被轉換的數組元素的個數.如果計數符是星號(*),則剩余的所有數組元素將被轉換."sSiIlL"指令中的任何一個都可后跟一個下劃線(_)以使用底層平臺的本地大小來表示指定的類型;否則使用平臺無關的大小.模板字符串的空格將被忽略.以#開頭到下一個新行或字符串結尾的注釋也被忽略.

a = %w(a b c)
n = [65, 66, 67]
a.pack("A3A3A3")
=> "a  b  c  "
a.pack("a3a3a3")
=> "a\000\000b\000\000c\000\000"
n.pack("ccc")


push
arr.push(<obj>*)->arr

將給定參數添加到數組中.
a = %w(a b c)
a.push %w(d e f)
=> ["a", "b", "c", ["d", "e", "f"]]


reject!
arr.reject!{block}item->arr或nil

等價于Array#delete_if,但如果沒做任何改變,則返回nil.

delete_if
arr.delete_if{|item|block} -> arr

刪除數組arr中那些能使block返回true的元素
a = %w(a b c)
a.delete_if{|x| x >= "b"}


reverse
arr.reverse -> an_array

反序arr的元素,并返回新數組

slice
arr.slice(int)->obj
arr.slice(start,length)->an_array
arr.slice(range)->an_array


a = %w(a b c d e f)
a.slice(2)
=>"c"
a.slice(1,2)
=> ["b", "c"]
a.slice(1..3)
=>["b","c","d"]


uniq
arr.uniq->an_array


刪除arr中的重復元素,并返回結果數組,重復元素是通過使用eql?和hash比較檢測出來的.
a = %w(a a b b c)
a.uniq
=> ["a", "b", "c"]




























































论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics