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
函数时,只使用数组中的编号项(但在这种情况下没有编号项)。命名的项目将被忽略