<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Ruby 數組(Array) Ruby 數組是任何對象的有序的、整數索引的集合。數組中的每個元素都與一個索引相關,并可通過索引進行獲取。 數組的索引從 0 開始,這與 C 或 Java 中一樣。一個負數的索引時相對于數組的末尾計數的,也就是說,索引為 -1 表示數組的最后一個元素,-2 表示數組中的倒數第二個元素,依此類推。 Ruby 數組可存儲諸如 String、 Integer、 Fixnum、 Hash、 Symbol 等對象,甚至可以是其他 Array 對象。Ruby 數組不像其他語言中的數組那么剛性。當向數組添加元素時,Ruby 數組會自動增長。 ## 創建數組 有多種方式創建或初始化數組。一種方式是通過 _new_ 類方法: ``` names = Array.new ``` 您可以在創建數組的同時設置數組的大小: ``` names = Array.new(20) ``` 數組 _names_ 的大小或長度為 20 個元素。您可以使用 size 或 length 方法返回數組的大小: ``` #!/usr/bin/ruby names = Array.new(20) puts names.size # 返回 20 puts names.length # 返回 20 ``` 這將產生以下結果: ``` 20 20 ``` 您可以給數組中的每個元素賦值,如下所示: ``` #!/usr/bin/ruby names = Array.new(4, "mac") puts "#{names}" ``` 這將產生以下結果: ``` macmacmacmac ``` 您也可以使用帶有 new 的塊,每個元素使用塊中的計算結果來填充: ``` #!/usr/bin/ruby nums = Array.new(10) { |e| e = e * 2 } puts "#{nums}" ``` 這將產生以下結果: ``` 024681012141618 ``` 數組還有另一種方法,[],如下所示: ``` nums = Array.[](1, 2, 3, 4,5) ``` 數組創建的另一種形式如下所示: ``` nums = Array[1, 2, 3, 4,5] ``` 在核心 Ruby 中可用的 _Kernel_ 模塊有一個 Array 方法,只接受單個參數。在這里,該方法帶有一個范圍作為參數來創建一個數字數組: ``` #!/usr/bin/ruby digits = Array(0..9) puts "#{digits}" ``` 這將產生以下結果: ``` 0123456789 ``` ## 數組內建方法 我們需要有一個 Array 對象的實例來調用 Array 方法。下面是創建 Array 對象實例的方式: ``` Array.[](...) [or] Array[...] [or] [...] ``` 這將返回一個使用給定對象進行填充的新的數組。現在,使用創建的對象,我們可以調用任意可用的實例方法。例如: ``` #!/usr/bin/ruby digits = Array(0..9) num = digits.at(6) puts "#{num}" ``` 這將產生以下結果: ``` 6 ``` 下面是公共的數組方法(假設 _array_ 是一個 Array 對象): | 方法 | 描述 | | --- | --- | | **array & other_array** | 返回一個新的數組,包含兩個數組中共同的元素,沒有重復。 | | **array * int [or] array * str** | 返回一個新的數組,新數組通過連接 self 的 int 副本創建的。帶有 String 參數時,相當于 self.join(str)。 | | **array + other_array** | 返回一個新的數組,新數組通過連接兩個數組產生第三個數組創建的。 | | **array - other_array** | 返回一個新的數組,新數組是從初始數組中移除了在 other_array 中出現的項的副本。 | | **str <=> other_str** | 把 str 與 other_str 進行比較,返回 -1(小于)、0(等于)或 1(大于)。比較是區分大小寫的。 | | **array &#124; other_array** | 通過把 other_array 加入 array 中,移除重復項,返回一個新的數組。 | | **array << obj** | 把給定的對象附加到數組的末尾。該表達式返回數組本身,所以幾個附加可以連在一起。 | | **array <=> other_array** | 如果數組小于、等于或大于 other_array,則返回一個整數(-1、 0 或 +1)。 | | **array == other_array** | 如果兩個數組包含相同的元素個數,且每個元素與另一個數組中相對應的元素相等(根據 Object.==),那么這兩個數組相等。 | | **array[index] [or] array[start, length] [or] array[range] [or] array.slice(index) [or] array.slice(start, length) [or] array.slice(range)** | 返回索引為 _index_ 的元素,或者返回從 _start_ 開始直至 _length_ 個元素的子數組,或者返回 _range_ 指定的子數組。負值索引從數組末尾開始計數(-1 是最后一個元素)。如果 _index_(或開始索引)超出范圍,則返回 _nil_。 | | **array[index] = obj [or] array[start, length] = obj or an_array or nil [or] array[range] = obj or an_array or nil** | 設置索引為 _index_ 的元素,或者替換從 _start_ 開始直至 _length_ 個元素的子數組,或者替換 _range_ 指定的子數組。如果索引大于數組的當前容量,那么數組會自動增長。負值索引從數組末尾開始計數。如果 _length_ 為零則插入元素。如果在第二種或第三種形式中使用了 _nil_,則從 _self_ 刪除元素。 | | **array.abbrev(pattern = nil)** | 為 _self_ 中的字符串計算明確的縮寫集合。如果傳遞一個模式或一個字符串,只考慮當字符串匹配模式或者以該字符串開始時的情況。 | | **array.assoc(obj)** | 搜索一個數組,其元素也是數組,使用 obj.== 把 obj 與每個包含的數組的第一個元素進行比較。如果匹配則返回第一個包含的數組,如果未找到匹配則返回 _nil_。 | | **array.at(index)** | 返回索引為 index 的元素。一個負值索引從 _self_ 的末尾開始計數。如果索引超出范圍則返回 nil。 | | **array.clear** 從數組中移除所有的元素。 | | **array.collect { &#124;item&#124; block } [or] array.map { &#124;item&#124; block }** | 為 _self_ 中的每個元素調用一次 _block_。創建一個新的數組,包含 block 返回的值。 | | **array.collect! { &#124;item&#124; block } [or] array.map! { &#124;item&#124; block }** | 為 _self_ 中的每個元素調用一次 _block_,把元素替換為 _block_ 返回的值。 | | **array.compact** | 返回 _self_ 的副本,移除了所有的 _nil_ 元素。 | | **array.compact!** | 從數組中移除所有的 _nil_ 元素。如果沒有變化則返回 _nil_。 | | **array.concat(other_array)** | 追加 other_array 中的元素到 _self_ 中。 | | **array.delete(obj) [or] array.delete(obj) { block }** | 從 _self_ 中刪除等于 _obj_ 的項。如果未找到相等項,則返回 _nil_。如果未找到相等項且給出了可選的代碼 _block_,則返回 _block_ 的結果。 | | **array.delete_at(index)** | 刪除指定的 _index_ 處的元素,并返回該元素。如果 index 超出范圍,則返回 _nil_。 | | **array.delete_if { &#124;item&#124; block }** | 當 _block_ 為 true 時,刪除 _self_ 的每個元素。 | | **array.each { &#124;item&#124; block }** | 為 _self_ 中的每個元素調用一次 _block_,傳遞該元素作為參數。 | | **array.each_index { &#124;index&#124; block }** | 與 Array#each 相同,但是傳遞元素的 _index_,而不是傳遞元素本身。 | | **array.empty?** | 如果數組本身沒有包含元素,則返回 true。 | | **array.eql?(other)** | 如果 _array_ 和 _other_ 是相同的對象,或者兩個數組帶有相同的內容,則返回 true。 | | **array.fetch(index) [or] array.fetch(index, default) [or] array.fetch(index) { &#124;index&#124; block }** | 嘗試返回位置 _index_ 處的元素。如果 _index_ 位于數組外部,則第一種形式會拋出 _IndexError_ 異常,第二種形式會返回 _default_,第三種形式會返回調用 _block_ 傳入 _index_ 的值。負值的 _index_ 從數組末尾開始計數。 | | **array.fill(obj) [or] array.fill(obj, start [, length]) [or] array.fill(obj, range) [or] array.fill { &#124;index&#124; block } [or] array.fill(start [, length] ) { &#124;index&#124; block } [or] array.fill(range) { &#124;index&#124; block }** | 前面三種形式設置 _self_ 的被選元素為 _obj_。以 _nil_ 開頭相當于零。_nil_ 的長度相當于 _self.length_。最后三種形式用 block 的值_填充_數組。_block_ 通過帶有被填充的每個元素的絕對索引來傳遞。 | | **array.first [or] array.first(n)** | 返回數組的第一個元素或前 _n_ 個元素。如果數組為空,則第一種形式返回 _nil_,第二種形式返回一個空的數組。 | | **array.flatten** | 返回一個新的數組,新數組是一個一維的扁平化的數組(遞歸)。 | | **array.flatten!** | 把 _array_ 進行扁平化。如果沒有變化則返回 _nil_。(數組不包含子數組。) | | **array.frozen?** | 如果 _array_ 被凍結(或排序時暫時凍結),則返回 true。 | | **array.hash** | 計算數組的哈希代碼。兩個具有相同內容的數組將具有相同的哈希代碼。 | | **array.include?(obj)** | 如果 _self_ 中包含 _obj_,則返回 true,否則返回 false。 | | **array.index(obj)** | 返回 _self_ 中第一個等于 obj 的對象的 _index_。如果未找到匹配則返回 _nil_。 | | **array.indexes(i1, i2, ... iN) [or] array.indices(i1, i2, ... iN)** | 該方法在 Ruby 的最新版本中被廢棄,所以請使用 Array#values_at。 | | **array.indices(i1, i2, ... iN) [or] array.indexes(i1, i2, ... iN)** | 該方法在 Ruby 的最新版本中被廢棄,所以請使用 Array#values_at。 | | **array.insert(index, obj...)** | 在給定的 _index_ 的元素前插入給定的值,index 可以是負值。 | | **array.inspect** | 創建一個數組的可打印版本。 | | **array.join(sep=$,)** | 返回一個字符串,通過把數組的每個元素轉換為字符串,并使用 _sep_ 分隔進行創建的。 | | **array.last [or] array.last(n)** | 返回 _self_ 的最后一個元素。如果數組為_空_,則第一種形式返回 _nil_。 | | **array.length** | 返回 _self_ 中元素的個數。可能為零。 | | **array.map { &#124;item&#124; block } [or] array.collect { &#124;item&#124; block }** | 為 _self_ 的每個元素調用一次 _block_。創建一個新的數組,包含 block 返回的值。 | | **array.map! { &#124;item&#124; block } [or] array.collect! { &#124;item&#124; block }** | 為 _array_ 的每個元素調用一次 _block_,把元素替換為 block 返回的值。 | | **array.nitems** | 返回 _self_ 中 non-nil 元素的個數。可能為零。 | | **array.pack(aTemplateString)** | 根據 aTemplateString 中的指令,把數組的內容壓縮為二進制序列。指令 A、 a 和 Z 后可以跟一個表示結果字段寬度的數字。剩余的指令也可以帶有一個表示要轉換的數組元素個數的數字。如果數字是一個星號(*),則所有剩余的數組元素都將被轉換。任何指令后都可以跟一個下劃線(_),表示指定類型使用底層平臺的本地尺寸大小,否則使用獨立于平臺的一致的尺寸大小。在模板字符串中空格會被忽略。 | | **array.pop** | 從 _array_ 中移除最后一個元素,并返回該元素。如果 _array_ 為空則返回 _nil_。 | | **array.push(obj, ...)** | 把給定的 obj 附加到數組的末尾。該表達式返回數組本身,所以幾個附加可以連在一起。 | | **array.rassoc(key)** | 搜索一個數組,其元素也是數組,使用 == 把 _key_ 與每個包含的數組的第二個元素進行比較。如果匹配則返回第一個包含的數組。 | | **array.reject { &#124;item&#124; block }** | 返回一個新的數組,包含當 block 不為 true 時的數組項。 | | **array.reject! { &#124;item&#124; block }** | 當 block 為真時,從 _array_ 刪除元素,如果沒有變化則返回 _nil_。相當于 Array#delete_if。 | | **array.replace(other_array)** | 把 _array_ 的內容替換為 _other_array_ 的內容,必要的時候進行截斷或擴充。 | | **array.reverse** | 返回一個新的數組,包含倒序排列的數組元素。 | | **array.reverse!** | 把 _array_ 進行逆轉。 | | **array.reverse_each {&#124;item&#124; block }** | 與 Array#each 相同,但是把 _array_ 進行逆轉。 | | **array.rindex(obj)** | 返回 array 中最后一個等于 obj 的對象的索引。如果未找到匹配,則返回 _nil_。 | | **array.select {&#124;item&#124; block }** | 調用從數組傳入連續元素的 block,返回一個數組,包含 block 返回 _true_ 值時的元素。 | | **array.shift** | 返回 _self_ 的第一個元素,并移除該元素(把所有的其他元素下移一位)。如果數組為空,則返回 _nil_。 | | **array.size** | 返回 _array_ 的長度(元素的個數)。length 的別名。 | | **array.slice(index) [or] array.slice(start, length) [or] array.slice(range) [or] array[index] [or] array[start, length] [or] array[range]** | 返回索引為 _index_ 的元素,或者返回從 _start_ 開始直至 _length_ 個元素的子數組,或者返回 _range_ 指定的子數組。負值索引從數組末尾開始計數(-1 是最后一個元素)。如果 _index_(或開始索引)超出范圍,則返回 _nil_。 | | **array.slice!(index) [or] array.slice!(start, length) [or] array.slice!(range)** | 刪除 _index_(長度是可選的)或 _range_ 指定的元素。返回被刪除的對象、子數組,如果 _index_ 超出范圍,則返回 _nil_。 | | **array.sort [or] array.sort { &#124; a,b &#124; block }** | 返回一個排序的數組。 | | **array.sort! [or] array.sort! { &#124; a,b &#124; block }** | 把數組進行排序。 | | **array.to_a** | 返回 _self_。如果在 _Array_ 的子類上調用,則把接收參數轉換為一個 Array 對象。 | | **array.to_ary** | 返回 self。 | | **array.to_s** | 返回 self.join。 | | **array.transpose** | 假設 self 是數組的數組,且置換行和列。 | | **array.uniq** | 返回一個新的數組,移除了 _array_ 中的重復值。 | | **array.uniq!** | 從 _self_ 中移除重復元素。如果沒有變化(也就是說,未找到重復),則返回 _nil_。 | | **array.unshift(obj, ...)** | 把對象前置在數組的前面,其他元素上移一位。 | | **array.values_at(selector,...)** | 返回一個數組,包含 self 中與給定的 _selector_(一個或多個)相對應的元素。選擇器可以是整數索引或者范圍。 | | **array.zip(arg, ...) [or] array.zip(arg, ...){ &#124; arr &#124; block }** | 把任何參數轉換為數組,然后把 _array_ 的元素與每個參數中相對應的元素合并。 | ## 數組 pack 指令 下表列出了方法 Array#pack 的壓縮指令。 | 指令 | 描述 | | --- | --- | | @ | 移動到絕對位置。 | | A | ASCII 字符串(填充 space,count 是寬度)。 | | a | ASCII 字符串(填充 null,count 是寬度)。 | | B | 位字符串(降序) | | b | 位字符串(升序)。 | | C | 無符號字符。 | | c | 字符。 | | D, d | 雙精度浮點數,原生格式。 | | E | 雙精度浮點數,little-endian 字節順序。 | | e | 單精度浮點數,little-endian 字節順序。 | | F, f | 單精度浮點數,原生格式。 | | G | 雙精度浮點數,network(big-endian)字節順序。 | | g | 單精度浮點數,network(big-endian)字節順序。 | | H | 十六進制字符串(高位優先)。 | | h | 十六進制字符串(低位優先)。 | | I | 無符號整數。 | | i | 整數。 | | L | 無符號 long。 | | l | Long。 | | M | 引用可打印的,MIME 編碼。 | | m | Base64 編碼字符串。 | | N | Long,network(big-endian)字節順序。 | | n | Short,network(big-endian)字節順序。 | | P | 指向一個結構(固定長度的字符串)。 | | p | 指向一個空結束字符串。 | | Q, q | 64 位數字。 | | S | 無符號 short。 | | s | Short。 | | U | UTF-8。 | | u | UU 編碼字符串。 | | V | Long,little-endian 字節順序。 | | v | Short,little-endian 字節順序。 | | w | BER 壓縮的整數 \fnm。 | | X | 向后跳過一個字節。 | | x | Null 字節。 | | Z | 與 a 相同,除了 null 會被加上 *。 | ## 實例 嘗試下面的實例,壓縮各種數據。 ``` a = [ "a", "b", "c" ] n = [ 65, 66, 67 ] puts a.pack("A3A3A3") #=> "a b c " puts a.pack("a3a3a3") #=> "a\000\000b\000\000c\000\000" puts n.pack("ccc") #=> "ABC" ``` 這將產生以下結果: ``` a b c abc ABC ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看