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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 14.結構和 OpenStruct 好的,在前面的章節中,我們介紹了類,現在讓我們簡單地看一下名為 struct &lt;sup class="footnote"&gt;[ [35](#_footnotedef_35 "View footnote.") ]&lt;/sup&gt; 的簡單事物。 輸入以下程序并執行 ```rb # struct_start.rb person = Struct.new :name, :age p = person.new p.name = "Karthik" p.age = 30 puts "Hello, I am #{p.name}, age #{p.age}" ``` 輸出量 ```rb Hello, I am Karthik, age 30 ``` 好了,現在讓我們看看它是如何工作的。 首先,你將使用此語句創建新的`Struct`類型 ```rb Struct.new :name, :age ``` 現在,你要命名它,以便可以使用它,將其命名為`person` ```rb person = Struct.new :name, :age ``` 命名后,此變量`person`的作用類似于`class`,你可以像這樣聲明它的新實例 ```rb p = person.new ``` 在上面的語句中,`p`是 person 的實例。 現在我們可以使用以下語句分配`p`的`:name`和`:age` ```rb p.name = "Karthik" p.age = 30 ``` 然后你可以打印數據,如下所示 ```rb puts "Hello, I am #{p.name}, age #{p.age}" ``` 而已。 在不使用`class`的情況下,你創建了一個數據結構并使用了它! 你不覺得它很棒嗎? 并不是`person = Struct.new :name, :age`中的`person`應該是可變的(即以小寫字母開頭),但是它也可以像`Person`一樣是常量。 這就是這里的下一段代碼中的確切內容 ```rb # struct_constant.rb Person = Struct.new :name, :age p = Person.new p.name = "Karthik" p.age = 30 puts "Hello, I am #{p.name}, age #{p.age}" ``` Output ```rb Hello, I am Karthik, age 30 ``` 所以在這些行中 ```rb Person = Struct.new :name, :age p = Person.new ``` 我們已經將`Person`與大寫字母 P 結合使用,并且代碼有效! 如果你擔心在上一個程序中需要輸入很多字符,可以如下所示將其縮短。 請看下面的代碼。 ```rb # struct_one_line.rb person = Struct.new :name, :age p = person.new "Karthik", 30 puts "Hello, I am #{p.name}, age #{p.age}" ``` Output ```rb Hello, I am Karthik, age 30 ``` 我們得到相同的輸出,但是在這一行中 ```rb p = person.new "Karthik", 30 ``` 我們設法消除了這兩條線 ```rb p.name = "Karthik" p.age = 30 ``` 如果你注意到正確的話,`p = person.new "Karthik", 30`看起來不是類中的構造函數嗎? 并非`Struct`僅限于其屬性數據結構。 你可以具有一個`Struct`實例可以調用的功能,如下面的程序所示。 輸入并執行。 ```rb include:code/struct_about_me.rb[] ``` Output ```rb Hello, I am Karthik, age 30 ``` 如你所見,在 Struct 的`do end`塊之間定義了一個名為`about_me`的函數。 我們在此行`p = person.new "Karthik", 30`中聲明一個人`p`,然后像`puts p.about_me`這樣調用`p`上的`about_me`函數,程序運行正常。 你還必須注意,我們可以將參數傳遞給 struct 中的函數,但是由于我的懶惰,我沒有顯示該示例。 現在讓我們看看如何以錯誤的方式進行結構化。 在下面輸入程序并執行 ```rb # struct_wrong.rb person = Struct.new :name, :age p = person.new p.name = "Karthik" p.age = 30 p.profession = "Engineer" puts "Hello, I am #{p.name}, age #{p.age}, and I am on a #{p.profession}" ``` Output ```rb struct_wrong.rb:7:in `<main>': undefined method `profession=' for #<struct name="Karthik", age=30> (NoMethodError) ``` 如果你得到如上所示的輸出,則表明你正確鍵入了該程序。 問題出在`p.profession = "Engineer"`行中,我們正在將數據分配給尚未在結構`person = Struct.new :name, :age`中聲明的名為職業的屬性。 因此會引發錯誤。 為了避免這些事情,你可以使用下面的程序中所示的 Open Struct ```rb # open_struct.rb require 'ostruct' p = OpenStruct.new p.name = "Karthik" p.age = 30 puts "Hello, I am #{p.name}, age #{p.age}" ``` Output ```rb Hello, I am Karthik, age 30 ``` Open Struct 類似于 Struct,但是它沒有預定義其數據結構或屬性。
                  <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>

                              哎呀哎呀视频在线观看