Syntax 对象方法不接收可变参数

Syntax 对象方法不接收可变参数,syntax,autohotkey,variadic-functions,Syntax,Autohotkey,Variadic Functions,这很有效 string = <div>foo</div><br /><div>bar</div><br /> ModifyText(string, {"<br\s\/?>": "REPLECED`r`n", "<div>": "<p>", "</div>": "</p>"}*) msgbox % string ModifyText(ByRef strHaystack

这很有效

string = <div>foo</div><br /><div>bar</div><br />
ModifyText(string, {"<br\s\/?>": "REPLECED`r`n", "<div>": "<p>", "</div>": "</p>"}*)
msgbox % string
ModifyText(ByRef strHaystack, oParams*) {
    for k, v in oParams 
        strHaystack := RegexReplace(strHaystack, k, v)
}
string=foo
bar
ModifyText(字符串,{“”:“REPLECED`r`n”,“”:“”,“”:“

”}*) msgbox%字符串 修改文本(ByRef strHaystack,oParams*){ 对于蛋白石中的k,v strHaystack:=RegexReplace(strHaystack,k,v) }
然而,当我用类方法做同样的事情时,它失败了。类方法不接收传递的对象

string = <div>foo</div><br /><div>bar</div><br />
o := new ByrefTest
o.ModifyText(string, {"<br\s\/?>": "REPLECED`r`n", "<div>": "<p>", "</div>": "</p>"}*)
msgbox % string
class ByrefTest 
{
    ModifyText(ByRef strHaystack, oParams*) {
        for k, v in oParams 
            strHaystack := RegexReplace(strHaystack, k, v)      
    }
}
string=foo
bar
o:=新的ByrefTest o、 ModifyText(字符串,{“”:“REPLECED`r`n”,“”:“”,“”:“

”}*) msgbox%字符串 类ByrefTest { 修改文本(ByRef strHaystack,oParams*){ 对于蛋白石中的k,v strHaystack:=RegexReplace(strHaystack,k,v) } }
为什么

这本手册似乎暗示了什么

设置对象属性时不能使用此语法,因为 最后一个物理参数实际上是指定的值

但听起来并不是关于这个限制

手册上说:

直接调用用户定义函数时,参数数组可能包含命名项

这意味着命名项/参数在其他情况下不受支持

直接调用用户定义的变量函数时,命名项(
)将复制到
运算放大器中。请注意,对象本身并没有传递给函数

当您通过调用
o
对象间接调用
ByrefTest.ModifyText
函数时,只使用数组中的编号项(但在这种情况下没有编号项)。命名的项目将被忽略。

手册上说:

直接调用用户定义函数时,参数数组可能包含命名项

这意味着命名项/参数在其他情况下不受支持

直接调用用户定义的变量函数时,命名项(
)将复制到
运算放大器中。请注意,对象本身并没有传递给函数

当您通过调用
o
对象间接调用
ByrefTest.ModifyText
函数时,只使用数组中的编号项(但在这种情况下没有编号项)。命名的项目将被忽略