飞扬 发表于 2024-4-26 09:22:55

return 这个函数到底有什么用啊?

很多人的脚本结束语前面有return,有些人又没有这个函数,实际使用中没感觉有啥区别啊?
那写上这个函数有什么意义吗?


例如下面这两段代码,使用中感觉都一样。
if BeePlayerBuffTime("飞弹速射")>0 then
    BeeRun("/cast 奥术飞弹","target")
    return
end


f BeePlayerBuffTime("飞弹速射")>0 then
    BeeRun("/cast 奥术飞弹","target")
end

xyaxy001 发表于 2024-4-26 09:35:56

本帖最后由 xyaxy001 于 2024-4-26 02:28 PM 编辑

还是多看多学习吧~~~~

飞扬 发表于 2024-4-26 11:54:42

xyaxy001 发表于 2024-4-26 09:35 AM
return会在上面的BeeRun运行完后,再次进入if判断;如果没有return,那么BeeRun运行完了就会跳到下一行,就 ...

哦 懂了,谢谢大佬指导{:5_242:}

lasskill 发表于 2024-4-26 12:02:38

就是返回的意思。返回到插件上面。

lulin155 发表于 2024-4-26 12:50:39

本帖最后由 lulin155 于 2024-4-26 12:54 PM 编辑

xyaxy001 发表于 2024-4-26 09:35 AM
return会在上面的BeeRun运行完后,再次进入if判断;如果没有return,那么BeeRun运行完了就会跳到下一行,就 ...
不懂就别瞎几把教别人

在函数末尾放置return可以方便地处理错误情况。如果函数执行过程中遇到错误,可以通过return , error_message的形式返回错误信息
给你举个例子
function add(a, b)
    if b == 0 then
      -- 如果除数为0,返回nil和一个错误信息
      return
    else
      -- 正常执行除法并返回结果
      return a / b, nil
    end
end
result, errorMessage = add(10, 0)
if result == nil then
    -- 处理错误
    print("Error occurred:", errorMessage)
end
这样脚本执行 函数的时候可以收集 函数的错误
默认的return等价于 return nil或者 return flase
如果末尾是return ture在lua 中 就不会再执行 函数的后面代码

不写return的基本都是菜鸡新手

懒动行不行 发表于 2024-4-26 20:00:24

xyaxy001 发表于 2024-4-26 09:35 AM
还是多看多学习吧~~~~

return除了返回值外,还有终止执行语句的作用
比如 if a then b return end
      if c then d return end
满足条件a,就执行b,随后终止程序
但是因为WBE脚本特点是重复执行,所以程序会再检测到是否满足条件a,显然这时候往往不会满足a,然后程序就会往下执行下一个循环语句
所以说一楼的回答是大致没有错的
自信点

lulin155 发表于 2024-4-27 12:35:21

不是我吹毛求疵显摆!编程是严谨的 错误理解会走很多弯路!楼主问的是 return 有什么意义1楼回答的是“ return会在上面的BeeRun运行完后,再次进入if判断;如果没有return,那么BeeRun运行完了就会跳到下一行。。。”有没有return程序都会下跳执行下一段代码,wbe再重复执行 也不是版主说的“大致不错的这样答案” , return 就是返回的作用   默认return就是返回错误代码作用,至于WBE的特性 重复执行 跟有没有 return 没什么关系!

blxyz521 发表于 2024-4-27 13:28:38

lulin155 发表于 2024-4-27 12:35 PM
不是我吹毛求疵显摆!编程是严谨的 错误理解会走很多弯路!楼主问的是 return 有什么意义1楼回答的是“ ...

不懂就别瞎几把教别人
6楼版主说的才是对的“return除了返回值外,还有终止执行语句的作用”。

你说的“ 有没有return程序都会下跳执行下一段代码”完全错了。
“不写return的基本都是菜鸡新手”证明你就是菜鸡。

楼主的例子,如果后面没有代码了,加不加return没啥区别。如果后面还有代码,那区别就很大了
if BeePlayerBuffTime("飞弹速射")>0 then
    BeeRun("/cast 奥术飞弹","target")
    return
end
代码XXXX

f BeePlayerBuffTime("飞弹速射")>0 then
    BeeRun("/cast 奥术飞弹","target")
end
代码XXXX

加return的时候,如果满足条件,即BeePlayerBuffTime("飞弹速射")>0,那么执行完"/cast 奥术飞弹",就会返回,后面的代码XXXX就不会运行。如果不满足条件,就会继续运行代码XXXX。
不加return的时候,不管满不满足条件,执行完if流程后都会继续运行代码XXXX。

lulin155 发表于 2024-4-27 14:08:30

blxyz521 发表于 2024-4-27 01:28 PM
不懂就别瞎几把教别人
6楼版主说的才是对的“return除了返回值外,还有终止执行语句的作用”。



我笑了!你还是去都学学LUA 基础吧   去把你代码执行一遍再来说话!基本的运算你都没理解

你奥术飞弹要 返回return ture才会返回不再执行后面代码   知道原因吗?去翻翻运算符的基础!

blxyz521 发表于 2024-4-27 14:41:54

本帖最后由 blxyz521 于 2024-4-27 02:57 PM 编辑

lulin155 发表于 2024-4-27 02:08 PM
我笑了!你还是去都学学LUA 基础吧   去把你代码执行一遍再来说话!基本的运算你都没理解

你奥术飞 ...
程序1:
local a=1--a=1时,输出1;a≠1时,输出2
if a==1 then
print(1)
return
end print(2)

程序2:
local a=1--a=1时,输出1 \n 2;a≠1时,输出2
if a==1 then
print(1)
end
print(2)

自己去试,打脸了别不吱声,记得来这立正。





页: [1] 2
查看完整版本: return 这个函数到底有什么用啊?