<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國際加速解決方案。 廣告
                ### 函數的參數 #### 按值傳遞 lua函數的參數大部分是按值傳遞的。值傳遞就是調用函數時,實參把它的值通過賦值運算傳遞給形參,然后形參的改變和實參就沒有關系了。在這個過程中,實參是通過它在參數表中的位置與形參匹配起來的。 > 示例代碼: ~~~ function swap(a, b) --定義函數swap,函數內部進行交換兩個變量的值 local temp = a a = b b = temp print(a, b) end local x = "hello" local y = 20 print(x, y) swap(x, y) --調用swap函數 print(x, y) --調用swap函數后,x和y的值并沒有交換 -->output hello 20 20 hello hello 20 ~~~ 在調用函數的時候,若形參個數和實參個數不同時,lua會自動調整實參個數。調整規則:若實參個數大于形參個數,從左向右,多余的實參被忽略;若實參個數小于形參個數,從左向右,沒有被實參初始化的形參會被初始化為nil。 > 示例代碼: ~~~ function fun1(a, b) --兩個形參,多余的實參被忽略掉 print(a, b) end function fun2(a, b, c, d) --四個形參,沒有被實參初始化的形參,用nil初始化 print(a, b, c, d) end local x = 1 local y = 2 local z = 3 fun1(x, y, z) -- z被函數fun1忽略掉了,參數變成 x, y fun2(x, y, z) -- 后面自動加上一個nil,參數變成 x, y, z, nil -->output 1 2 1 2 3 nil ~~~ #### 變長參數 上面函數的參數都是固定的,其實lua還支持變長參數。若形參為 ... ,表示該函數可以接收不同長度的參數。訪問參數的時候也要使用 ... 。 > 示例代碼: ~~~ function func(...) --形參為 ... ,表示函數采用變長參數 local temp = {...} --訪問的時候也要使用 ... local ans = table.concat(temp, " ") --使用table.concat庫函數,對數組內容使用" "拼接成字符串。 print(ans) end func(1, 2) --傳遞了兩個參數 func(1, 2, 3, 4) --傳遞了四個參數 -->output 1 2 1 2 3 4 ~~~ #### 具名參數 lua 還支持通過名稱來指定實參,這時候要把所有的實參組織到一個table中,并將這個table作為唯一的實參傳給函數。 > 示例代碼: ~~~ function change(arg) --change函數,改變長方形的長和寬,使其各增長一倍 arg.width = arg.width * 2 arg.height = arg.height * 2 return arg end local rectangle = { width = 20, height = 15 } print("before change:", "width =", rectangle.width, "height =", rectangle.height) rectangle = change(rectangle) print("after change:", "width =", rectangle.width, "height =", rectangle.height) -->output before change: width = 20 height = 15 after change: width = 40 height = 30 ~~~ #### 按址傳遞 當函數參數是table類型時,傳遞進來的是table在內存中的地址,這時在函數內部對table所做的修改,不需要使用return返回,就是有效的。我們把上面改變長方形長和寬的例子修改一下。 > 示例代碼: ~~~ function change(arg) --change函數,改變長方形的長和寬,使其各增長一倍 arg.width = arg.width * 2 --表arg不是表rectangle的拷貝,他們是同一個表 arg.height = arg.height * 2 end --沒有return語句了 local rectangle = { width = 20, height = 15 } print("before change:", "width =", rectangle.width, "height =", rectangle.height) change(rectangle) print("after change:", "width =", rectangle.width, "height =", rectangle.height) -->output before change: width = 20 height = 15 after change: width = 40 height = 30 ~~~ 在常用基本類型中,除了table是按址傳遞類型外,其它的都是按值傳遞參數。 用全局變量來代替函數參數的不好編程習慣應該被抵制,良好的編程習慣應該是減少全局變量的使用。
                  <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>

                              哎呀哎呀视频在线观看