函数调用时, 第一步,prefixexp 和 args 先被求值。 如果 prefixexp 的值的类型是 function, 那么这个函数就被用给出的参数调用。 否则 prefixexp 的元方法 "call" 就被调用, 第一个参数是 prefixexp 的值, 接下来的是原来的调用参数
这样的形式
functioncall ::= prefixexp ‘:’ Name args
可以用来调用 "方法"。 这是 Lua 支持的一种语法糖。 像 v:name(args) 这个样子, 被解释成 v.name(v,args), 这里的 v 只会被求值一次。
所有参数的表达式求值都在函数调用之前。 这样的调用形式 f{fields} 是一种语法糖用于表示 f({fields}); 这里指参数列表是一个新创建出来的列表。 而这样的形式 f'string' (或是 f"string" 亦或是 f[[string]]) 也是一种语法糖,用于表示 f('string'); 此时的参数列表是一个单独的字符串。
return functioncall 这样的调用形式将触发一次 尾调用。 Lua 实现了 完全尾调用(或称为 完全尾递归): 在尾调用中, 被调用的函数重用调用它的函数的堆栈项。 因此,对于程序执行的嵌套尾调用的层数是没有限制的。 然而,尾调用将删除调用它的函数的任何调试信息。 注意,尾调用只发生在特定的语法下, 仅当 return 只有单一函数调用作为参数时才发生尾调用; 这种语法使得调用函数的所有结果可以完整地返回。
函数调用时, 第一步,prefixexp 和 args 先被求值。 如果 prefixexp 的值的类型是 function, 那么这个函数就被用给出的参数调用。 否则 prefixexp 的元方法 "call" 就被调用, 第一个参数是 prefixexp 的值, 接下来的是原来的调用参数
函数调用时, 第一步,prefixexp 和 args 先被求值。 如果 prefixexp 的值的类型是 function, 那么这个函数就被用给出的参数调用。 否则 prefixexp 的元方法 "call" 就被调用, 第一个参数是 prefixexp 的值, 接下来的是原来的调用参数
要调用方法void showInfo()就直接在调用的地方直接写showInfo()要调用方法 boolean showInfo()就在调用的地方比如写boolean ect=showInfo()
要调用方法void showInfo(String message)就在调用的地方比如写showInfo("java functions")
有参数的括号里面传参数,无参方法的括号不能省.
有返回值的前面要加一个变量接受返回值。
方法之间是如何调用的?
比如在程序a行遇到调用方法showInfo()
程序在运行的时候会找到被调用的showInfo()方法所在的区域,如果showInfo方法是有参数的,则把参数传过去(传地址或者传值),然后就初始化showInfo方法开始执行,当showInfo方法执行遇到return语句或者执行代码结束,如果有return语句则返回一个showInfo方法的声明类型的值到程序行的接受参数变量;此时会返回到程序的a行执行。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)