Gaming
 

2.0 misc changes in Beta (JIM the Inventor)

From WoWWiki

Interface Customization » WoW API » API change summaries » 2.0 misc changes in Beta (JIM the Inventor)

Contents


I'm breaking Iriel's templates with this attempt to get information out quickly. The changes I have to note pertain to the leap from the original program (WoW 1.12) to the expansion (BC 2.0), and are listed here in an arbitrary order. Very sloppy, I know. :-) JIM 18:01, 11 November 2006 (EST)

These changes are from the upgrade to LUA 5.1. Full details can be found here.


Getting the Size of a Table

former implementation:

  local atable = {}
  tinsert( atable, "foo" )
  tinsert( atable, "bar" )
  local tableSize = atable.n


current implementation:

  local atable = {}
  tinsert( atable, "foo" )
  tinsert( atable, "bar" )
  local tableSize = select( "#", atable ) -- or more simply:
  tableSize = #atable

However, this does not appear to be a perfect translation across LUA versions. If atable started life as { ["x"] = "any value" } above, then the former implementation would result in tableSize = 2, whereas the current implementation results in tableSize = 3.


For-In-Do Loops Using Tables

former implementation:

  for key, value in atable do


current implementation:

  -- a simple search and replace
  for key, value in pairs( atable ) do


Functions with an Unknown Number of Parameters

former implementation:

  --[[ If "..." was included in the parameters,
     a variable "arg" was provided with:
        arg[1] = first_parameter
        arg[2] = second_parameter
        ..etc..
        arg.n = number of parameters passed to foo.
  ]]
  function foo(...)
     local say = DEFAULT_CHAT_FRAME.AddMessage
     say( "These values were passed to foo:" )
     
     for i = 1, args.n do
        say( tostring( args[i] ) )
     end
  end


current implementation:

  --[[ If "..." is included in the parameters,
     "..." itself behaves like a function
     that returns all parameters passed to foo.
  ]]
  function foo(...)
     local say = DEFAULT_CHAT_FRAME.AddMessage
     say( "These values were passed to foo:" )
     
     for i = 1, select( "#", ... ) do
        say( tostring( select( i, ... ) ) )
     end
  end