<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 6.數組 陣列可以視為機架。 你可以將任何東西 1 放在機架中,以類似的方式可以將任何東西放在陣列中。 一個機架包含許多架子或隔層。 如果你可以數數,則可以在每個隔間上放置數字,可以認為機架是用于存儲某些東西的空間陣列。 每個隔間可以用數字標識,因此易于識別。 陣列是可供程序員使用的機架。 讓我們看一個示例以了解更多信息。 在下面輸入程序并執行 ```rb # array.rb my_array = [] my_array << "Something" my_array << 123 my_array << Time.now my_array.each do |element| puts element end ``` 這就是你將獲得輸出的方式 ```rb Something 123 Tue Feb 02 18:10:06 +0530 2010 ``` 讓我們遍歷程序,以`my_array = []`行,在其中聲明一個名為`my_array`的數組,它是一個沒有任何內容的空數組。 `[]`表示一個空數組,我們將其分配給`my_array`。 這樣做后,我們在以下語句中填充一些值 ```rb my_array << "Something" my_array << 123 my_array << Time.now ``` 我們將元素追加到數組。 在第一條語句中,我們附加字符串常量`“Something”`,在第二條語句中,我們附加整數`123`,在第三條語句中,我們附加當前時間。 如果你猜對了,我們已經使用`&lt;&lt;`運算符將值附加到數組。 到現在為止,我們已經創建了一個名為`my_array`的數組,并將其放入其中。 現在,我們必須查看所輸入的內容。為此,我們使用`&lt;array_name&gt;.each`(每個數組名稱點一個點)。 此方法提取數組的每個元素。 因此,對于 my_array,我們使用`my_array.each` 好了,我們必須對數組的每個元素做一些事情。 為此,我們添加了`do … end`,我們可以在其中進行某些操作,因此我們的代碼將轉換為 ```rb my_array.each do end ``` 我們必須將數組的每個元素捕獲到一個變量中,讓我們使用名為`element`的變量來完成這項工作,因此我們使用以下代碼捕獲每個元素 ```rb my_array.each do |element| end ``` 注意我們如何將`element`變量放在`|`和`|`之間。 我們已經捕獲了數組的每個元素,現在該怎么辦? 我們將使用`puts`語句打印它。 這樣我們的數組就可以成功打印了。 以下程序也與以前的程序相同,但是我們使用`Array.new`而不是`[]`來表示`my_array`是一個數組 &lt;sup class="footnote"&gt;[ [23](#_footnotedef_23 "View footnote.") ]&lt;/sup&gt; ```rb # array_1.rb my_array = Array.new my_array << "Something" my_array << 123 my_array << Time.now my_array.each do |element| puts element end ``` 我將編寫另一個程序,該程序將使用`for`構造遍歷數組的每個元素,如下所示 ```rb # array_2.rb my_array = Array.new my_array << "Something" my_array << 123 my_array << Time.now for element in my_array puts element end ``` 輸出量 ```rb Something 123 2012-08-10 19:19:47 +0530 ``` 還有第三種創建數組的方法。 請仔細查看下面的程序。 看`my_array = [ "Something", 123, Time.now ]`。 仔細看,我們有`my_array`那是一個我們要為其分配數組的變量,其設置為`[ "Something", 123, Time.now ]`。 也就是說,在這種情況下,我們在同一條語句中聲明并向`my_array`添加了數組元素或值。 請注意,我們將數組的元素放在方括號中,這是聲明和填充數組的另一種方法。 因此,程序 [array_3.rb](code/array_3.rb) 的工作原理與 [array_1.rb](code/array_1.rb) 和 [array.rb](code/array.rb) 完全相同,但更加簡潔。 與許多語言不同,Ruby 讓程序員選擇自己的編碼風格。 ```rb # array_3.rb my_array = [ "Something", 123, Time.now ] puts my_array.join("\n") ``` Output ```rb Something 123 Wed Feb 03 17:37:36 +0530 2010 ``` 直到最后一個示例,我們使用每個示例來循環訪問數組元素,現在我們將使用一種新的循環,即`for`循環,因此這里是一個代碼 ```rb # array_for.rb my_array = Array.new my_array.push("Something") my_array.push 123 my_array << Time.now for element in my_array puts element end ``` Output ```rb Something 123 2014-11-12 10:37:22 +0530 ``` 請參閱上面我們采用的新構造,這是: ```rb for element in my_array puts element end ``` 注意這一行`for element in my_array`。 這等效于`my_array.each |element` | 在前面的示例中。 `for`循環我個人覺得有點優雅。 因此,就像`each`一樣,`my_array`中的每個元素都被加載到`element`中,這在循環塊中可供程序員使用。 在這里,我們只使用`puts element`打印它。 ### 6.1。 有關陣列的更多信息 現在讓我們看一些數組函數。 為此,我們將使用我們最喜歡的 irb 而不是文本編輯器 ```rb >> array = Array.new => [] ``` 好的,在上面的語句中,我們看到我們使用`Array.new`創建了一個名為`array`的數組。 `Array.new`創建一個空數組。 還有另一種創建數組的方法。 我們可以通過直接指定數組中包含的值來創建它,如下所示 ```rb >> array = ["Something", 123, Time.now] => ["Something", 123, Tue Feb 02 20:30:41 +0530 2010] ``` 在上面的語句中,我們創建了一個包含三個對象的數組。 必須在數組中的值在方括號`[`和`]`之間給出。 數組中的每個對象都用逗號分隔。 通過不提供`[`和`]`之間的值,我們甚至可以創建一個空數組,如下所示 ```rb >> array = [] => [] ``` 在上面的示例中,空白`[]`與 Array.new 的工作相同。 讓我們使用`Array.new`中的參數創建數組,如下所示 ```rb >> array = Array.new("Something", 123, Time.now) ArgumentError: wrong number of arguments (3 for 2) from (irb):3:in `initialize' from (irb):3:in `new' from (irb):3 from :0 ``` 如你所見,它失敗了! 不要那樣使用。 好的,現在讓我們在`array`上進行一些嘗試,首先要獲取`array`中有多少個元素,我們可以使用`length`函數,如下所示: ```rb >> array.length => 3 ``` `join`函數將許多數組元素連接在一起并返回它。 因此,當將數組中的元素連接在一起時,這就是結果: ```rb >> array.join(', ') => "Something, 123, Tue Feb 02 20:30:41 +0530 2010" ``` 請注意,當數組元素作為字符串連接時,我們將字符串`', '`傳遞給`join`。 我們傳遞的字符串將插入它們之間。 我們已經創建了一個數組,并且其中包含一些東西,如果我們想添加一些東西,該怎么辦? 為此,我們使用`push`方法。 在下面的示例中,我們將數字 5 推入`array`,然后看到數組得到擴展,最后將 5 附加到`array`。 ```rb >> array.push(5) => ["Something", 123, Tue Feb 02 20:30:41 +0530 2010, 5] ``` `pop`方法的作用與`push`相反,它彈出或刪除數組的最后一個元素。 參見下面的示例,我們彈出一個元素,然后彈出最后一個元素 5。 ```rb >> array.pop => 5 ``` 彈出后,讓我們看看`array`中的內容 ```rb >> array => ["Something", 123, Tue Feb 02 20:30:41 +0530 2010] ``` 我們看到數組大小減少了一個,最后一個元素 5 丟失了。 它不是只需要在`push`中給出固定值,而是可以將變量和 Ruby 表達式以及任何對象作為參數提供給 push。 你可以在下面看到我們將 2 提升到 10 的冪到數組,最后將 1024 添加到數組。 ```rb >> array.push 2**10 => ["Something", 123, Tue Feb 02 20:30:41 +0530 2010, 1024] ``` 索引數組元素。 數組的第一個元素的索引號為 0,并且繼續(理論上一直到無窮大)。 如果要訪問索引中的元素,則他要做的就是將索引號放在方括號之間。 在下面的示例中,我們訪問名為`array`的數組的第三個元素,因此我們將其鍵入如下 ```rb >> array[2] => Tue Feb 02 20:30:41 +0530 2010 ``` `pop`方法接受一個 I??nteger 作為參數,用于彈出`n`數組的最后一個元素。 ```rb >> array.pop(2) => [Tue Feb 02 20:30:41 +0530 2010, 1024] >> array => ["Something", 123] ``` 如你所見,第三個元素被彈出,因此可以隨機彈出。 我們可以一次將許多元素推入數組。 考慮下面的代碼片段 ```rb >> array.push 5, "Who am I?", 23.465*24 => ["Something", 123, 5, "Who am I?", 563.16] ``` 我們首先將 3 個新元素推入數組,然后得到一個更大的元素。 現在我們彈出最后 3 個元素 ```rb >> array.pop 3 => [5, "Who am I?", 563.16] ``` 如你所見,數組的大小減小了,現在只有兩個元素。 ```rb >> array => ["Something", 123] ``` 還有另一種在數組中追加元素的方法,它使用小于運算符`&lt;&lt;`的 double,使一些元素隨其推入數組,如下所示: ```rb >> array << "a new element" => ["Something", 123, "a new element"] >> array << 64 => ["Something", 123, "a new element", 64] ``` 如你在上面看到的,我們使用`&lt;&lt;`運算符將字符串常量`“a new element”`和`64`附加到數組。 你可以使用`max`和`min`函數在數組中找到最大值和最小值,如下所示: ```rb >> nums = [1, 2, 64, -17, 5 ,81] => [1, 2, 64, -17, 5, 81] >> nums.max => 81 >> nums.min => -17 ``` 如上例所示,我們創建了一個名為`nums`的數組,其中包含一些數字,`nums.max`返回該數組中的最大值,`nums.min`返回該數組中的最小值。 ### 6.2。 數組挖掘 看一下在 irb 中執行的一個簡單代碼段,我們有一個嵌套數組,可以說我們要訪問字符串元素`“Treasure”`,可以使用 dig 方法,如下所示 ```rb >> array = [1, 5, [7, 9, 11, ["Treasure"], "Sigma"]] => [1, 5, [7, 9, 11, ["Treasure"], "Sigma"]] >> array.dig(2, 3, 0) => "Treasure" ``` ### 6.3。 設定操作 對于那些了解集合論的人,你必須了解交集,并集。 我在學校時讀過關于集合論的文章,??但現在已經忘記了。 你可以將數組視為集合并對其執行許多操作。 以下是一些我在 irb 上試過的例子,讓我們參加一個大學排球隊,其中有些人叫 Ashok,Chavan,Karthik,Jesus 和 Budha。 如果你列出板球隊的名單,那就有 Budha,Karthik,Ragu 和 Ram。 現在讓我們用 ruby 對其進行編碼。 為了收集排球隊成員,我們創建了一個數組,如下所示 ```rb >> volleyball=["Ashok", "Chavan", "Karthik", "Jesus", "Budha"] => ["Ashok", "Chavan", "Karthik", "Jesus", "Budha"] ``` 以類似的方式,我們創建了另一個數組,其中包含板球隊中球員的姓名,如下所示 ```rb >> cricket=["Budha", "Karthik", "Ragu", "Ram"] => ["Budha", "Karthik", "Ragu", "Ram"] ``` 因此,我們有兩組人。 現在要找出誰在排球和板球運動中,我們所需要做的就是使用&運算符對兩個數組進行 AND(或取交) ```rb >> volleyball & cricket => ["Karthik", "Budha"] ``` 從上面的代碼片段中可以看到,`&`(和)運算符會嗅出兩個數組中都存在的那些元素。 在數學中,這種東西稱為交集。 讓我們說在另一種情況下,我們想找出所有排球和板球隊的人。 為此,我們使用 or 運算符`|`。 現在應用它 ```rb >> volleyball | cricket => ["Ashok", "Chavan", "Karthik", "Jesus", "Budha", "Ragu", "Ram"] ``` 如你所見,我們獲得了排球隊和板球隊成員的名字。 | (或)運算符不同于+(加號)運算符。 讓我們增加排球隊和板球隊 ```rb >> volleyball + cricket => ["Ashok", "Chavan", "Karthik", "Jesus", "Budha", "Budha", "Karthik", "Ragu", "Ram"] ``` 從上面的代碼片段中可以看到,名稱 Karthik 和 Budha 是重復的。 當我們使用|時,這不會發生。 (OR)運算符。 現在讓我們找出哪些球員只為排球隊效力。 為此,我們將使用`–`(減號)運算符減去排球隊的板球運動員,如下所示 ```rb >> volleyball - cricket => ["Ashok", "Chavan", "Jesus"] ``` 因此,我們看到排球隊中只有三名球員。 因此,如果你是數學家,你會對 Ruby 感到滿意。 ### 6.4。 空數組為真 Ruby 開發人員還必須了解其他內容。 它關于條件和空數組。 啟動你的 irb 并輸入 ```rb >> puts "A" if [] A => nil ``` 如果你看到的話,即使傳遞給`if`語句的數組為空,該語句也會打印 A。 這有點違背了最不令人驚訝的理論,但是請不要感到驚訝。 有一個書架,里面有書,所以如果你這樣說 ```rb >> puts "Books Present" if ["treasure island", "I Love Ruby"] Books Present => nil ``` 它確實按預期方式打印 Books Present。 但是在這件事上 ```rb >> puts "Books Present" if [] Books Present => nil ``` 它仍然會打印有書本。 那是因為即使書架是空的,也有一個仍然是物體的書架。 因此,有些事情不是`nil`。 因此,它是`true`。 為確保其工作原理,請看下面的代碼 ```rb >> nil.class => NilClass >> [].class => Array ``` 當我們查詢什么是`nil`的類時,它表示其`NilClass`實際上是一個空東西。 但是,當我們查詢空數組的類時,它仍然是`Array`,而不是`nil`或`false`,因此不是`true`。 檢查必須執行的空數組 ```rb >> puts "A" unless [].empty? => nil >> puts "A" if [].first => nil ``` 在第一個中,`[].empty?`返回`true`,但是由于它在`unles`中,因此將無法執行依賴于它的語句。 如果看到第二個我們使用`[].first`,則返回`nil`。 在 irb 中嘗試 ```rb >> [].first => nil ``` 因此,這也可以用于檢查數組是否為空。 還是這樣.....? ```rb >> a= [ nil, 1, 2, nil] => [nil, 1, 2, nil] >> puts "a is empty" unless a.first => a is empty >> puts "a is not empty" if a.first => nil >> puts "a is not empty" unless a.empty? a is not empty => nil ``` 不用考慮天氣還是不使用`first`檢查空度? ### 6.5。 壓縮陣列 有時一個數組可能包含`nil`值,而你想刪除它,在這種情況下,你可以在該數組上調用`compact`。 讓我們嘗試一個例子。 啟動你的 irb 或 pry,然后輸入以下內容 首先讓我們初始化數組 ```rb >> a = [1, nil, 2, nil, 3, nil] => [1, nil, 2, nil, 3, nil] ``` 因此,在上面的語句中,我們使用三個`nil`值初始化了數組。 現在,如下所示通過壓縮將`nil`值刪除 ```rb >> a.compact => [1, 2, 3] ``` 涼! 因此,紅寶石刪除了`nil`值,例如魔術。 現在讓我們看看`a`的樣子 ```rb >> a => [1, nil, 2, nil, 3, nil] ``` 令我們沮喪的是,仍然保留了零值,真正發生了什么? 好吧,當你在`a`上調用 compact 時,將創建一個新的壓縮數組,并將其返回給我們的 REPL &lt;sup class="footnote"&gt;[ [24](#_footnotedef_24 "View footnote.") ]&lt;/sup&gt; ,然后 REPL 將其打印出來。 那么如何使`a`真正改變呢? 如下所示,帶有 bang 或`compact!`的簡單調用緊湊型;) ```rb >> a.compact! => [1, 2, 3] >> a => [1, 2, 3] ``` ### 6.6。 轉換數組值 Ruby 帶有非常強大的數組操作,我們將看到如何在易于使用的命令中轉換數組。 #### 6.6.1。 收藏 火起來你的撬或 irb 并輸入以下內容 ```rb >> array = [1, 2, 3] => [1, 2, 3] >> array.collect{ |element| element * element } => [1, 4, 9] ``` 在上面的代碼中,我們聲明了類型為`Array`的變量`array`,在下一條語句中,我們在其上調用了名為`collect`的方法,并傳遞了此代碼塊`{ |element| element * element }`。 現在讓我們看看它的作用。 調用`collect`時,首先創建一個返回數組。 在該塊中,我們看到了一個名為`|element|`的東西,現在 collect 算法的工作原理如下。 首先,此數組具有值 1、2 和 3,因此此塊運行 3 次。 在第一次運行期間,將 1 裝入`element`,現在在塊中我們指定了`element * element`,因此`1 * 1`為`1`,并將其壓入返回數組。 現在返回數組為`[1]`。 現在,它取第二個值,即 2,并且發生相同的過程,現在返回數組為`[1, 4]`,類似地,返回數組最終變為`[1, 4, 9]`并返回。 `collect`不會修改調用它的對象,因此,如果你查看`array`是什么,它仍將與下面的顯示相同 ```rb >> array => [1, 2, 3] ``` 你可以在 irb 中檢查它。 如果要收集以修改被調用的對象,請使用爆炸符號,如下所示 ```rb >> array.collect!{ |element| element * element } => [1, 4, 9] >> array => [1, 4, 9] ``` #### 6.6.2。 keep_if 假設我們要在數組中具有匹配特定條件的元素,并想刪除其他條件,我們可以使用`keep_if`函數,如下所示 ```rb >> array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >> array.keep_if{ |element| element % 2 == 0} => [2, 4, 6, 8, 10] ``` 我們上面有一個由十個元素組成的數組,并說我們要保持偶數或被 2 整除的元素,因此我們將其寫為如下所示的語句 ```rb array.keep_if{ |element| element % 2 == 0} ``` 我們向`keep_if`傳遞了一個塊。 其中,數組中的每個值都在`|element|`中捕獲,并寫入了條件`element % 2 == 0`,如果條件為 true,則該元素將保留在數組中,否則將其拋出。 `keep_if`修改了其調用的數組,與之不同的是,collect 返回新數組。 因此,如果在運行`keep_if`之后檢查數組,其內容將發生更改。 #### 6.6.3。 delete_if 與`keep_if`相對,`delete_if`的作用恰好相反,下面顯示了如果在 Array 對象上運行`delete_if`會發生什么。 ```rb >> array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >> array.delete_if{ |element| element % 2 == 0} => [1, 3, 5, 7, 9] >> array => [1, 3, 5, 7, 9] ``` ### 6.7。 閱讀紅寶石文檔 毫無疑問,這本書不夠全面,無法涵蓋所有??Ruby Array 庫。 要了解更多信息,請在此處閱讀 Ruby 文檔 [https://ruby-doc.org/core-2.5.1/Array.html](https://ruby-doc.org/core-2.5.1/Array.html)
                  <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>

                              哎呀哎呀视频在线观看