Lua Gideros:具有多个参数的呼叫功能

问题描述:

在我使用Gideros Studio的游戏中,我有一个具有多个参数的功能。我想在一个参数上调用我的函数,然后在另一个参数上调用我的函数。这可能吗?Lua Gideros:具有多个参数的呼叫功能

这里是我的功能:

local function wiggleroom(a,b,c) 
    for i = 1,50 do 
     if a > b then 
      a = a - 1 
     elseif a < b then 
      a = a + 1 
     elseif a == b then 
      c = "correct" 
     end 
    return c 
    end 
end 

我想ab相比,但后来就呼吁bc功能。例如:

variable = (wiggleroom(variable, b, c) --if variable was defined earlier 
variable2 = (wiggleroom(a, variable2, c) 
variable3 = (wiggleroom(a, b, variable3) 

我也希望能够将这个函数用于多个对象(每个参数调用两次)。

+0

请澄清,什么是你在每个函数调用后预期的结果。你想要在功能之外更改a和b的值吗? – lisu 2014-10-18 23:57:41

+0

我不想让a和b在函数之外被更改,我只是希望将它们进行比较。但是,我想根据这个比较来返回c的值。 – 2014-10-19 00:53:24

+0

那你为什么不能像你说的那样完全调用它? – lisu 2014-10-19 01:01:07

如果我正确理解你,你可以考虑使用lua版本的类。如果你不知道他们,你可能想看看 this

例如:

tab = {} 

function tab:func(a, b, c) -- c doesn't get used? 
    if a then self.a = a end 
    if a then self.b = b end 
    if a then self.c = c end 

    for i = 1,50 do 
     if self.a > self.b then 
      self.a = self.a - 1 
     elseif self.a < self.b then 
      self.a = self.a + 1 
     elseif self.a == self.b then 
      self.c = "correct" 
     end 
    end 
    return c    -- not really necessary anymore but i leave it in 
end 

function tab:new (a,b,c) --returns a table 
    o = {} 
    o.a = a 
    o.b = b 
    o.c = c 
    setmetatable(o, self) 
    self.__index = self 
    return o 
end 

          --how to use: 
whatever1 = tab:new(1, 60) --set a and b 
whatever2 = tab:new()  --you also can set c here if needed later in the function 

whatever1:func()   --calling your function 
whatever2:func(0,64) 

print(whatever1.a)   -->51 
print(whatever2.a)   -->50 
print(whatever1.c)   -->nil 
whatever1:func()   --calling your function again 
whatever2:func() 
print(whatever1.a)   -->60 
print(whatever2.a)   -->64 
print(whatever1.c)   -->correct 
print(whatever2.c)   -->correct