LUACN论坛

 找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
热搜: YJWOW MagicStone BoL
查看: 245|回复: 18

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

 关闭 [复制链接]
发表于 2024-4-26 09:22:55 | 显示全部楼层 |阅读模式
很多人的脚本结束语前面有return,有些人又没有这个函数,实际使用中没感觉有啥区别啊?
那写上这个函数有什么意义吗?


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


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

回复

使用道具 举报

发表于 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运行完了就会跳到下一行,就 ...

哦 懂了,谢谢大佬指导
回复 支持 反对

使用道具 举报

发表于 2024-4-26 12:02:38 | 显示全部楼层
就是返回的意思。返回到插件上面。
回复 支持 反对

使用道具 举报

发表于 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的基本都是菜鸡新手

评分

参与人数 1伸手费 +25 收起 理由
懒动行不行 + 25 百家争鸣,万花齐放

查看全部评分

回复 支持 反对

使用道具 举报

发表于 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,然后程序就会往下执行下一个循环语句
所以说一楼的回答是大致没有错的
自信点
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 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。

评分

参与人数 1伸手费 +25 收起 理由
懒动行不行 + 25 百家争鸣,万花齐放

查看全部评分

回复 支持 反对

使用道具 举报

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

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

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

使用道具 举报

发表于 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)

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





回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

小黑屋|手机版|Archiver|LUACN论坛

GMT+8, 2024-5-9 07:17 AM , Processed in 0.123349 second(s), 37 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表