2013-02-09 58 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" 

不夠優雅,但工作。