Jump to content

Problem with return


McDeKi

Recommended Posts

Hello, I have a problem, I'm looping through all elements in my table.

  
function SprawdzWolneMiejsca() 
    for k, v in pairs ( Plecak ) do 
      for i=1, wysokoscY do 
        if not Plecak[k][i] == false then 
            liczbaPrzedmiotow = liczbaPrzedmiotow + 1 
                         outputChatBox(liczbaPrzedmiotow) 
                        return liczbaPrzedmiotow 
            end 
        end 
    end 
end 
  

It works and output count of elements in table, but If I will use return then it output 1, because the loop wont ended looping through all elements, any advice how to fix it?

I have tried doing, that when the loop is ending looping then I return value

  
function SprawdzWolneMiejsca() 
    for k, v in pairs ( Plecak ) do 
      for i=1, wysokoscY do 
        if not Plecak[k][i] == false then 
            liczbaPrzedmiotow = liczbaPrzedmiotow + 1 
                         outputChatBox(liczbaPrzedmiotow) 
                     if k == liczbaPrzedmiotow then 
                        return liczbaPrzedmiotow 
                            end 
            end 
        end 
    end 
end 
  

Link to comment

I made a table full of falses

{

false

false

false

false

item

item

item

false

false

}

and I want to count how many items is in the table and then I want output count of items, that why I'm using return

Edited by Guest
Link to comment
function SprawdzWolneMiejsca ( ) 
    local result = false 
    for k, v in pairs ( Plecak ) do 
        for i = 1, wysokoscY do 
            if ( not Plecak [ k ] [ i ] == false ) then 
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 ) 
                outputChatBox ( liczbaPrzedmiotow ) 
                if ( k == liczbaPrzedmiotow ) then 
                    result = liczbaPrzedmiotow 
                    break 
                end 
            end 
        end 
    end 
  
    return result 
end 

Link to comment

Ok, fixed it.

  
function SprawdzWolneMiejsca ( ) 
liczbaPrzedmiotow = 0 
    for k, v in pairs ( Plecak ) do 
        for i = 1, wysokoscY do 
            if ( not Plecak [ k ] [ i ] == false ) then 
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 ) 
                end 
            end 
        end 
        return liczbaPrzedmiotow 
    end 
  

Thanks for advice.

Link to comment
  • Moderators
Ok, fixed it.
  
function SprawdzWolneMiejsca ( ) 
liczbaPrzedmiotow = 0 
    for k, v in pairs ( Plecak ) do 
        for i = 1, wysokoscY do 
            if ( not Plecak [ k ] [ i ] == false ) then 
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 ) 
                end 
            end 
        end 
        return liczbaPrzedmiotow 
    end 
  

Thanks for advice.

Please use local variables as soon as you can:

local liczbaPrzedmiotow = 0 

Link to comment
Ok, fixed it.
  
function SprawdzWolneMiejsca ( ) 
liczbaPrzedmiotow = 0 
    for k, v in pairs ( Plecak ) do 
        for i = 1, wysokoscY do 
            if ( not Plecak [ k ] [ i ] == false ) then 
                liczbaPrzedmiotow = ( liczbaPrzedmiotow + 1 ) 
                end 
            end 
        end 
        return liczbaPrzedmiotow 
    end 
  

Thanks for advice.

I first thought you wanted this, but then I didn't understand why you had this:

if ( k == liczbaPrzedmiotow ) then 

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...