1. 程式人生 > >lua ... 可變長引數

lua ... 可變長引數

lua 中 … 在引數列表中意為”可變引數”,這個可變是指,通過這個可以輸入很多引數,但是不需要一一列舉出來!~

例子:

function a(...)
    local a1 ,a2,a3,a4 = ...
    print("this is local num=",a1,a2,a3,a4)
    return a1, a2, a3, a4
end

local at1,at2,at3,at4 = a(1,2,3,4)
print("this is the function result=",at1,at2,at3,at4)


輸出:
this is local num=1 2 3 4
this is the function result=1 2 3 4

在函式內通過表訪問可變引數,把可變引數放入表內
function rest(...)
    -- 把可變引數放在表類
    local args = { ... }
    print(#args)
end

print(rest(1, 2, 3))

‘#’ 操作符表示得到陣列的長度


輸出:
3

放在頂部的可變長引數
在一些lua檔案中可以在頭部看到local A,B = …,這種引數是通過命令列等其他外部環境傳入的引數,如:
-- A.lua檔案
local A, B =...
print(A, B)


輸出:
1 2

在shell或者命令列中呼叫

lua A.lua 1 2

相關推薦

lua ... 可變引數

lua 中 … 在引數列表中意為”可變引數”,這個可變是指,通過這個可以輸入很多引數,但是不需要一一列舉出來!~ 例子: function a(...) local a1 ,a2,a3,a4

可變引數---(函式的定義---形參)

收集引數---(函式的定義---形參) 1. 在引數前加*         將所有的引數,打包成元組         可以直接使用位置引數傳遞實參 2. 在引數前加**  &n

C語言可變引數函式與預設引數提升

學習本章內容的時候,首先需要知道可變引數提升相關的知識。 原文地址:https://blog.csdn.net/astrotycoon/article/details/8284501 1、概述 C標準中有一個預設引數提升(default argument promotions)規則。

【小白學Lua】之Lua引數和unpack函式

一、簡介   Lua的變長引數和unpack函式在實際的開發中應用的還挺多的,比如在設計print函式的時候,需要支援對多個變數進行列印輸出,這時我們就需要用到Lua中的變長引數和unpack函數了。 二、Lua變長引數與unpack函式   Lua中支援可變引數,用 ... 表示。比如定義下面的這樣一

va_start、va_end、va_arg 實現可變引數

/*******************************///va_start、va_end、va_arg 實現可變長引數/*******************************/ #include <stdarg.h>#include <stdio.h> #def

四.def 函式 可變引數

 def 函式  可變長引數 # 10.def 函式 fun1 函式名 # x 形式引數 在程式執行時,記憶體才會將其例項化 # fun1(2) 2為實參 x例項化,2將賦值給x #數學表

lua ... (變引數)

1.獲取 local arg = { ... } --這裡的...和{}符號中間需要有空格號,否則會出錯 2.獲取長度 local function test( ... )         

Java可變引數

含義 Java 5中提供了可變長引數,允許在呼叫方法時傳入不定長度的引數。變長引數本質上還是基於陣列的實現: void foo(String... args); void foo(String[] args); void foo(int... arrys); void foo(float

C函式中,可變引數的傳遞?

設定結束條件,這裡的條件就是判斷引數值是否為-1。注意被調的函式在呼叫時是不知道可變引數的正確數目的,程式設計師必須自己在程式碼中指明結束條件。至於為什麼它不會知道引數的數目,在看完這幾個巨集的內部實現機制後,自然就會明白。第二篇 C語言之可變引數問題 C語言中有一種長度不確定的引數,形如:"…",它主要用在

Lua5.2新版本可變引數操作

在Version5.2 Lua的版本中,取消了預設的arg表操作函式( ... )可變長引數的操作 以前的: local function test( ... ) num = arg.n return num end 假如你這樣呼叫函式test(

java中可變引數的使用方法

Java中可變長引數的使用及注意事項 1. 可變長引數的定義 使用…表示可變長引數,例如 print(String... args){ ... } 在具有可變長引數的方法中可以把引數當成陣列使用,例如可以迴圈輸出所有的引數值。 print(

非同步任務的3個引數可變引數

可變長引數: 底層就是一個數組,只能出現在方法的形參裡,不能定義 1)可變長引數的方法只有在必須的時候才會呼叫,如果有確切匹配的不可變 引數的方法,會優先選擇不可變引數的方法; 2)如果兩個方法都是可變長引數,都能匹配時,會編譯通不過;編譯器不知道呼叫哪個; 3)一個方法只能有一個可變長引數,並且這個可變

Java可變引數列表

在Java中我們不知道自己有多少個引數要傳遞怎麼辦?可以試試可變長引數列表。語法格式為:type... args例如求n個數中的最大值,n事先不知道,那麼可以這樣寫:private int max(in

關於Scala重寫Java可變引數方法

public interface KeyGenerator { /** * Generate a key for the given method and its parameters. * @param target the target instance

Java 可變引數

原理 Java可變長引數列表的實現是通過編譯器把把這些引數封裝成一個數組來傳遞的。 注意點 可變成引數列表不能與同類型陣列過載,因為它本身就是陣列 void print(int... args) { } //Error : Duplicat

java 可變引數 Object...object

有時候,我們傳入到方法的引數的個數是不固定的,為了解決這個問題,我們一般採用下面的方法: 1.  過載,多過載幾個方法,儘可能的滿足引數的個數。顯然這不是什麼好辦法。 2.  將引數作為一個數組傳入。雖然這樣我們只需一個方法即可,但是,為了傳遞這個陣列,我們需要先宣告一個數組,然後將引數一個一個加到陣列中。

Lua引數詳解

Lua變長引數:           Lua支援變長引數,使用簡單(藉助於table、多重賦值),  Lua中的函式還可以接受不同數量的實參。例如:在呼叫print時可以傳入一個、兩個或多個實參。引數

C語言可變引數列表原理與實現

可變引數在程式設計中的實現。 stdarg.h標準庫提供的巨集支援了可變長引數列表的使用。 當然,在一些情況下也可以自己通過其實現原理來使用可變長引數程式設計。 條件一: C語言程式設計中函式的形參入棧順序都是從右至左。棧的生長方向是,低地址《—— 高地

Playframework2.2.x中路由接受可變引數例子

這段時間寫play框架的webservice,遇到了一個問題,就是我們提供的webservice,甲方需要對我們的webservice進行服務狀態的檢測,大家都知道,play裡面函式引數和路由引數是繫

Python的可變引數

Or, How to use variable length argument lists in Python. The special syntax, *args and **kwargs in function definitions is used to pas