function的使用

--带一个返回值的函数
function rectangleArea(width, height)
  local area = width * height
  return area
end


print("320x480的长方形的面积:" .. rectangleArea(32, 64)) --320x480的长方形的面积:2048


--定义计算长方形面积和周长函数
function caleRectangle(width, height)


  local area = width * height
  local perimeter = (width + height) * 2
  
  return area,perimeter
end


------------------------------------------------
--带两个返回值的函数
--获得计算长方形面积和周长
local area, perimeter = caleRectangle(10, 15)
print("宽10 高15,长方形面积:" .. area .. "  长方形周长:" .. perimeter) --宽10 高15,长方形面积:150  长方形周长:50


-------------------function里面的function-----------------------------
function calculate(opr, a, b)


  --定义+函数
  function add(a, b)
    return a + b
  end


  --定义-函数
  function sub(a, b)
    return a - b
  end


  local result


  if opr == "+" then
    result = add(a, b)
  else
    result = sub(a, b)
  end


  return result
end


local res1 = calculate("+", 10, 5)
print("10 + 5 = " .. res1) --10 + 5 = 15


local res2 = calculate("-", 10, 5)
print("10 - 5 = " .. res2) --10 - 5 = 5


-------------------function间接的传参数-----------------------------
--定义计算长方形面积函数
function rectangleArea(width, height)
  local area = width * height
  return area
end


--定义计算三角形面积函数
function triangleArea(bottom, height)
  local area = 0.5 * bottom * height
  return area
end


function getArea(type)
  local returnFunction
  if type == "rect" then  --rect 表示长方形
    returnFunction = rectangleArea
  else                    --tria 表示三角形
    returnFunction = triangleArea
  end
  return returnFunction
end


--获得计算三角形面积函数
local area = getArea("tria")
print("底10 高13,三角形面积:" .. area(10, 15)) --底10 高13,三角形面积:75


--获得计算长方形面积函数
local area = getArea("rect")
print("宽10 高15,计算长方形面积:" .. area(10, 15))  --宽10 高15,计算长方形面积:150


------------------------------------------------
function getArea(type)
  local returnFunction


  if type == "rect" then  --rect 表示长方形
    returnFunction = function(width, height)
      local area = width * height
      return area
    end
  else                    --tria 表示三角形
    returnFunction = function(bottom, height)
      local area = 0.5 * bottom * height
      return area
    end
  end
  return returnFunction
end


--获得计算三角形面积函数
local area = getArea("tria")
print("底10 高13,三角形面积:" .. area(10, 15))--底10 高13,三角形面积:75


--获得计算长方形面积函数
local area = getArea("rect")
print("宽10 高15,计算长方形面积:" .. area(10, 15))--宽10 高15,计算长方形面积:150




-------------------定义对象的接口-----------------------------
Student = {id = 100, name = "Tony"}


function Student.toString()
  local s = "Name:" .. Student.name .. " id:" .. Student.id
  return s
end


print(Student.toString()) --Name:Tony id:100


------------------------------------------------
Student = {id = 100, name = "Tony"}


function Student:toString()
  local s = "Name:" .. self.name .. " id:" .. self.id
  return s
end


print(Student:toString()) --Name:Tony id:100


------------------------------------------------
Student = {id = 100, name = "Tony"}


function Student:toString()
  local s = "Name:" .. self.name .. " id:" .. self.id
  return s
end


function Student:create(o)
  o = o or{}
  setmetatable(o, self)
  self.__index = self
  return o
end


student1 = Student:create({id = 200, name = "Tom"})  --Name:Tom id:200
print(student1:toString())


student2 = Student:create({id = 300, name = "Ben"})  --Name:Ben id:300
print(student2:toString())


-------------------局部变量和全局变量-----------------------------
local global = 1


function f()
  local local1 = 2
  global = global + 1
  return global
end


f()


print(global)  --2
print(local1)  --nil
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值