Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Employee = class()
- function Employee:init(name, position, address)
- self.name = name
- self.position = position
- self.address = address
- end
- Address = class()
- function Address:init(houseNum, street, city, state, zip)
- self.houseNum = houseNum
- self.street = street
- self.city = city
- self.state = state
- self.zip = zip
- end
- function Address:hash()
- return self.houseNum .. "_" .. self.street .. "_" .. self.city .. "_" .. self.state .. "_" .. self.zip
- end
- function setup()
- local emps = LinqArray()
- print(emps:any())
- emps:add(Employee("Bob", "Accountant", Address(111, "Example St.", "New York", "NY", 123456)))
- emps:add(Employee("John", "CSR", Address(150, "Sample Dr.", "Buffalo", "NY", 123599)))
- emps:add(Employee("Jane", "Accountant", Address(66, "Example St.", "New York", "NY", 123456)))
- emps:add(Employee("Mary", "Secretary", Address(5, "Test Ln.", "Trenton", "NJ", 123305)))
- emps:add(Employee("Mark", "CEO", Address(5, "Test Ln.", "Trenton", "NJ", 123305)))
- print("any emps named Eric: ", emps:any(function(e) return e.name == "Eric" end))
- print("Emp count: ", emps:count())
- print()
- nyEmps = emps:where(function(e) return e.address.state == "NY" end)
- print("NY emp count: ", nyEmps:count())
- print("First NY emp: ", nyEmps:first().name)
- print()
- njEmps = emps:where(function(e) return e.address.state == "NJ" end)
- print("NJ emp count: ", njEmps:count())
- print("First NJ emp: ", njEmps:first().name)
- nyEmpCities = emps:where(function(e) return e.address.state == "NY" end):
- select(function(e) return e.address.city end):distinct()
- print()
- print("Distinct NY cities:")
- for k, v in ipairs(nyEmpCities) do
- print(v)
- end
- print()
- print("Distinct address hashes:")
- local addrs = emps:select(function(e) return e.address end):distinct(Address.hash)
- for k, v in ipairs(addrs) do
- print(v:hash())
- end
- print()
- local css = LinqArray()
- css:add({ name = "color", value = "red"})
- css:add({ name = "text-align", value = "center"})
- css:add({ name = "width", value = "150px"})
- local cssDict = css:toDictionary(function(c) return c.name end,
- function(c) return c.value end)
- print("text-align: " .. cssDict["text-align"])
- print("color: " .. cssDict["color"])
- print()
- local lineItems = LinqArray()
- lineItems:add({ recurAmount = 10, setupFee = 5 })
- lineItems:add({ recurAmount = 17, setupFee = 9 })
- lineItems:add({ recurAmount = 0, setupFee = 24 })
- lineItems:add({ recurAmount = 168, setupFee = 47 })
- print("sum recur amounts: ", lineItems:sum(function(i) return i.recurAmount end))
- print("max recur amount: ", lineItems:max(function(i) return i.recurAmount end))
- print("min recur amount: ", lineItems:min(function(i) return i.recurAmount end))
- print("avg setup feea: ", lineItems:avg(function(i) return i.setupFee end))
- lineItems:removeWhere(function(i) return i.setupFee <= 10 end)
- print("line item count with setup fee > 10: " .. lineItems:count())
- end
- function draw()
- background(40, 40, 50)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement