2013-02-09 54 views
1

在传统的ASP中,我有一个对象,称之为bob。然后有一个名为name的属性,其中有letget方法。经典ASP--传递属性byref

我有一个函数如下:

sub append(byref a, b) 
    a = a & b 
end sub 

这简直让它更快文本添加到一个变量。我也有相同的prepend,只是它是a = b & a。我知道这很容易说bob.name = bob.name & "andy",但我尝试使用上述功能,但他们都没有工作。

我叫它的方式是append bob.name, "andy"。任何人都可以看到这有什么问题吗?

由于提前, 问候, 理查德

+0

我也尝试过从'bob'内使用'append Title',andy'',但它仍然无法工作。 :( – ClarkeyBoy 2013-02-09 21:02:13

回答

1

您是否尝试过使用与关键字CALL

call append (bob.name, "andy") 

经典ASP是fickel大约为ByRef和BYVAL。默认情况下,它使用ByRef - 没有理由指定。如果使用括号(不带调用)调用函数,它将以ByVal形式传递变量。

或者,你可以完成相同的搭配:

function append(byref a, b) 
    append = a & b 
end sub 

bob.name = append(bob.name, "andy"); 

好运。

+0

感谢您的回复,但第一个解决方案不起作用,对于第二个解决方案,它只需要使用'bob.name = bob.name&“andy”'来添加通常较少的字符;整个点该函数的作用是通过仅引用一次我添加的变量来减少字符数。 – ClarkeyBoy 2013-02-09 22:48:13

2

不幸的是,这是VBScript的一个功能。它被记录在http://msdn.microsoft.com/en-us/library/ee478101(v=vs.84).aspx下的“课堂上的争论”中。另一种方法是使用一个函数。这是一个说明差异的例子。您可以在命令行中使用的“cscript filename.vbs运行此。

sub append (a, b) 
    a = a & b 
end sub 

function Appendix(a, b) 
    Appendix = a & b 
end function 

class ClsAA 
    dim m_b 
    dim m_a 
end class 
dim x(20) 

a = "alpha" 
b = "beta" 
wscript.echo "variable works in both cases" 
append a, b 
wscript.echo "sub " & a 
a = appendix(a, b) 
wscript.echo "function " & a 

x(10) = "delta" 
wscript.echo "array works in both cases" 
append x(10), b 
wscript.echo "sub " & x(10) 
x(10) = appendix(x(10), b) 
wscript.echo "function " & x(10) 

set objAA = new ClsAA 
objAA.m_a = "gamma" 
wscript.echo "Member only works in a function" 
append objAA.m_a, b 
wscript.echo "sub " & objAA.m_a 
objAA.m_a = appendix(objAA.m_a, b) 
wscript.echo "function " & objAA.m_a 
0

由于this other answer正确地指出,你所面对的语言本身的限制。

唯一的其他选择,以达到你所追求的据我可以看到它,就是这样子例程添加到类本身:

Public Sub Append(propName, strValue) 
    Dim curValue, newValue 
    curValue = Eval("Me." & propName) 
    newValue = curValue & strValue 
    Execute("Me." & propName & " = """ & Replace(newValue, """", """""") & """") 
End Sub 

然后使用它:

bob.Append "name", "andy" 

不够优雅,但工作。