2

「パブリック機能」と「機能」の違いを知りたいだけです

誰かが助けることができれば、そしてそれは高く評価されます。

ありがとう

4

3 に答える 3

3

パブリックアクセス可能性とプライベートアクセス可能性の概念は、クラスを使用して最もよく説明されます。

Option Explicit

Class cPubPrivDemo
  Public   m_n1
  Dim      m_n2
  Private  m_n3
  Private Sub Class_Initialize()
    m_n1 = 1
    m_n2 = 2
    m_n3 = 3
  End Sub
  Sub s1()
    WScript.Echo "s1 (Public by default) called"
  End Sub
  Public Sub s2()
    WScript.Echo "s2 (Public by keyword) called"
  End Sub
  Private Sub s3()
    WScript.Echo "s3 (Private by keyword) called"
  End Sub
  Public Sub s4()
    WScript.Echo "(public) s4 can call (private) s3 from inside the class"
    s3
  End Sub
End Class

Dim oPPD : Set oPPD = New cPubPrivDemo

WScript.Echo "Can access public member variables of oPPD:", oPPD.m_n1, oPPD.m_n2

WScript.Echo "No access to oPPD's private parts:"
Dim n3
On Error Resume Next
n_3 = oPPD.m_n3
WScript.Echo Err.Description
On Error GoTo 0

WScript.Echo "Can call public subs:"
oPPD.s1
oPPD.s2

WScript.Echo "Can't call private sub .s3:"
On Error Resume Next
oPPD.s3
WScript.Echo Err.Description
On Error GoTo 0

WScript.Echo "private sub s3 can be called from inside the class:"
oPPD.s4

スクリプトの出力から:

Can access public member variables of oPPD: 1 2
No access to oPPD's private parts:
Object doesn't support this property or method
Can call public subs:
s1 (Public by default) called
s2 (Public by keyword) called
Can't call private sub .s3:
Object doesn't support this property or method
private sub s3 can be called from inside the class:
(public) s4 can call (private) s3 from inside the class
s3 (Private by keyword) called

あなたが見ることができます:

  1. プライベートコンポーネント(変数、サブ、関数とプロパティにも同じことが当てはまります)には、コンポーネントの内部(ここではクラス)からアクセスできます。
  2. パブリックコンポーネントには外部からアクセスできます(表示されていませんが、おそらくもっともらしいです。パブリックは内部からも使用できます)
  3. アクセス権/モード(?)を明示的に指定しない(m_n2、s1)デフォルトは「パブリック」
  4. あなたの質問への短い答え:なし-(3)のため

「パブリックステートメント」のVBScriptドキュメントは次のように述べています

パブリック変数を宣言し、ストレージスペースを割り当てます。Classブロックで、パブリック変数を宣言します。

パブリックステートメント変数は、すべてのスクリプトのすべてのプロシージャで使用できます。

したがって、アクセシビリティルールが(結合された)スクリプト(ソースコードファイル)に適用されるかどうか、およびどのように適用されるかを調査/テストできます。QTPによる複数のソースファイルの処理については何も知らないので、そこではお手伝いできません。

于 2012-06-11T12:41:36.137 に答える
3

Ekkehard.Horner の回答に加えて、QTP では Qtp Function Libraries (QFL) を .qfl または .vbs ファイルとしてロードすることもできます。

functionconstまたはプライベートな QFL 内のvariableは、別の QFL、モジュール、またはアクションで使用できませんが、パブリックのものは使用できます。

関数、定数、および変数は、デフォルトで public です。

' All public:
Dim MyVariable
Public MyOtherVariable
Const PI = 3.1415
Function GetHello
    GetHello = "Hello"
End Function
Sub SayHello
    MsgBox GetHello
End Sub

' All private:
Private myPrivates
Private Const HELLO = "HELLO!"
Private Function getHelloToo
    getHelloToo = HELLO
End Function
Private Sub sayHelloToo
    MsgBox getHelloToo
End Sub

Class Dog
    Public Function Bark
        Print "Bark! Bark! Bark!"
    End Function
End Class

はい、クラスは常にモジュール内でプライベートです。それらを公開するには、関数から返す必要があります。

' Placed in the same module as Class Dog
Public Function GiveMeADog
    Set GiveMeADog = new Dog
End Function
于 2012-06-11T13:05:45.140 に答える
2

パブリックとプライベートの問題は、クラス内で使用される場合にのみ問題になります。VBScriptクラス内では、関数はデフォルトでパブリックであるため、2つの間に違いはありません。Privateを使用すると、クラスの外部から関数にアクセスできなくなります。

于 2012-06-11T12:38:38.430 に答える