ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 常见问题(FAQ) ## 目录 [TOC] ## 这个Lib的作用是什么? 为AHK补足基础功能。 > AHK 没有官方自带或者第三方实现的完善的标准库,这样如果需要实现非内置的功能通常需要直接调用 Windows API 或寻找别人封装好的函数。AHK 语言本身并不强大,缺少很多现代语言所具备的高级特性,同时也缺乏对多线程等操作系统特性的支持。[-- 陌辞寒](https://segmentfault.com/a/1190000005006771) ### 为什么不叫标准库 stdlib ? 因为已经有叫这个名字了,还不止一个。 ## 更多介绍一下"中心式导入"? ### BeanLib使用要求 将所有"子Lib"导入某脚本。 "子Lib"指的是除了"BeanLib.ahk"之外的所有该项目下的 .ahk 文件。 #### 为什么是 除了"BeanLib.ahk"之外 ? BeanLib.ahk 是"中心式导入" 的示例文件,你可以使用其中的固定地址,也可以自定义,并不是必须的。 ### "中心式导入"具体是什么意思? 为了导入整个Lib库,先把所有"子Lib"导入一个"中心式"Lib文件。 其他想引用Lib的脚本,只需要导入"中心式"文件即可。 这样后期维护起来会非常的方便。 ### 如果想使用"中心式导入",又无法使用示例中的地址该怎么办? Clone Git 之后,你可以建立一个属于自己的"中心式"Lib文件,然后将它添加到Git的忽略列表中。 这个方法的缺点在于,如果 "子Lib" 的结构有改变,你需要手动更改自己的"中心式"Lib文件。 其实一般不会有什么问题,Pull 的时候只要留意一下,是否有大的改动就可以了。 ### 除了"中心式导入",还有没有其他的导入方法? 具体参考,AHK帮助文档里面会有非常多的介绍。 这里还有几点建议,供您参考。 - 最好不要使用"自动入库"。因为这种方法只会在"显式调用"的时候生效,也就是无法动态引用,可能会造成很多兼容性问题。 - 优先考虑使用"相对路径"。"绝对路径"会让后期维护非常麻烦。 ## 为什么三个平台内容不一样? 看云 是最优先更新的平台,因为对文档展示的兼容性最好,支持搜索。 在源代码没有更改的情况下,[GitEE](https://gitee.com/xrvu_zen/BeanLib) 和 [GitHub](https://github.com/Oilj/BeanLib) 都不会更新。 所以当内容不一致时,以 [看云](https://www.kancloud.cn/xrvu_zen/ahk_lib/902301) 为准。 ## 为什么函数失效了? - 检查类是否被覆盖。 AHK中类是对象,直接加载到全局空间,所以类是可以被覆盖的。为了避免这一情况,BeanLib类都以"_"开头。可以开启 `#Warn ClassOverwrite` ,当类被覆盖时,将会收到提示。 - 检查是否开启强制Local。 - Class 默认为"强制全局",但如果函数体的第一行是Local,那么 Class 的"强制全局"会失效。 您可以取消Local,或者在Local后声明 Class 为全局,格式为 `Global ClassName`。 - 如果您开启Local是为了避免收到 LocalListmeGlobal 警告,那么也可以单独关闭该警告。 在`#Warn`后方添加,`#Warn LocalSameAsGlobal, Off`,即可。 - 检查输入值/返回值。 AHK语法灵活,没有类型,所以输入值容易出错,请检查输入是否符合要求。 如果您期待函数返回一个值,请检查该函数是否的确应当返回该值,很多时候函数只是对传入的地址中的数据进行操作,并不返回值。(尤其是传入参数为 ByRef 或者为 数组 时。) - BUG。 还有一种可能,就是程序设计出现了BUG。 您可以在对应文档下方评论留言,提交issue,或者 Pull Request。