经过短暂的夏日休整,我们本月携众多错误修复和改进回归,旨在提升 WurstScript 的易用性和整体用户体验。
请确保您的 wurst 安装工具 是最新版本,然后更新您的 wurst 安装,以获得对 wc3 补丁版本更好的处理、一些新的代码检查警告以及新的优化器功能。
@compiletime
的警告和错误,这有助于避免一些用户层面的编程问题。许多新功能和合并的 pull requests!标准库表现出色——以下是一些显著的变化:
TerrainUtils
包已由 #67 重构,以实现更好的集成和高级功能。LinkedList#sort
已修复,不再具有指数级性能。ClosureEvents
已添加到标准库中。这是一个用于轻松封装事件监听的新包。 代码示例:EventListener.onPointCast(hero, MY_SPELL) (caster, target) ->
forUnitsInRange(target, 256) victim ->
caster.damageTarget(victim)
非常感谢所有出色的贡献者!
您知道 wurst 编译器支持多种自动优化,能让您的地图脚本保持小巧和快速吗?(在 Wurst for vJass Users 中有更详细的讨论)。
本月我们新增了众多新的优化器改进,使 wurst 的这一功能比以往任何时候都更加强大。以下是摘要:
init
只使用一个触发器。set
和 exitwhen
语句在适用时现在会合并为一个。a + a => a*2
),这提高了其他优化的效率。新优化的妙处在于它们会产生类似雪崩效应。这意味着,由于输出代码中的这些“微小”变化,其他已有的优化现在可以再次成功应用,而之前它们可能毫无作用。
您可以随时在 _build/output.j.txt
文件中查看输出代码。这里有一个小例子:
let g = CreateGroup()
for u from g
u.addHP(100)
会变成:
local group from = CreateGroup()
local unit iterUnit
loop
exitwhen FirstOfGroup(from) == null
set iterUnit = FirstOfGroup(from)
call GroupRemoveUnit(from, iterUnit)
call SetUnitState(iterUnit, UNIT_STATE_LIFE, GetUnitState(iterUnit, UNIT_STATE_LIFE) + 100.)
endloop
set from = null
set iterUnit = null
感谢您的阅读,我们希望您喜欢这些帖子——和往常一样,请告诉我们您的想法。
附言:如果您还没有为 Wurst 仓库点亮星星,请帮忙点一下,助我们达到 100 星!
祝好!
-Frotty