3

クラシック ASP には、オブジェクトがあり、それを と呼びますbobnameこれには、 withletおよびgetメソッドというプロパティがあります。

次のような機能があります。

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

これは単に変数にテキストを追加するのをより速くするためです。私も について同じことを持っていprependますa = b & a。言うbob.name = bob.name & "andy"のは簡単だと思いますが、上記の関数を使用してみましたが、どちらも機能しません。

私がそれを呼んでいる方法はですappend bob.name, "andy"。誰でもこれの何が悪いのか分かりますか?

4

3 に答える 3

3

残念ながら、これは 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
于 2013-02-10T08:40:36.523 に答える
2

キーワードで使用してみましたかCALL:

call append (bob.name, "andy")

従来の ASP は、ByRef と ByVal について気まぐれです。デフォルトでは ByRef を使用します。これを指定する理由はありません。括弧付きで (呼び出しなしで) 関数を呼び出すと、変数は ByVal として渡されます。

または、次の方法でも同じことができます。

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

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

幸運を。

于 2013-02-09T21:40:23.750 に答える
0

この他の答えが正しく述べているように、あなたは言語自体の制限に直面しています。

私が見る限り、あなたが求めているものを達成するための他の唯一のオプションは、そのようなサブルーチンをクラス自体に追加することです。

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"

あまりエレガントではありませんが、機能しています。

于 2013-02-10T11:47:31.000 に答える