#!lua -- This file contains some handy functions for better .NET support local luanet = require "luanet" -- Create and initialize an array: -- a1 = luanet.array(System.String, {"Hello", "World"}) -- a2 = luanet.array(System.Int32, { 20, 30, 40 }) function luanet.array(ty, init) local n = table.getn(init) local array = ty[n] for i = 1, n do array[i - 1] = init[i] end return array end -- Return a Lua-style iterator (function,state,var) for any IEnumerable -- for elem in luanet.elements(collection) do ... local IEnumerable = luanet.System.Type:GetType('System.Collections.IEnumerable') local function elements(enum, val0) if val0 == nil then assert(IEnumerable:IsInstanceOfType(enum), "Expected: IEnumerable") return elements, enum:GetEnumerator(), true elseif not enum:MoveNext() then return nil else return enum.Current end end luanet.elements = elements