「パブリック機能」と「機能」の違いを知りたいだけです
誰かが助けることができれば、そしてそれは高く評価されます。
ありがとう
パブリックアクセス可能性とプライベートアクセス可能性の概念は、クラスを使用して最もよく説明されます。
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
あなたが見ることができます:
「パブリックステートメント」のVBScriptドキュメントは次のように述べています
パブリック変数を宣言し、ストレージスペースを割り当てます。Classブロックで、パブリック変数を宣言します。
と
パブリックステートメント変数は、すべてのスクリプトのすべてのプロシージャで使用できます。
したがって、アクセシビリティルールが(結合された)スクリプト(ソースコードファイル)に適用されるかどうか、およびどのように適用されるかを調査/テストできます。QTPによる複数のソースファイルの処理については何も知らないので、そこではお手伝いできません。
Ekkehard.Horner の回答に加えて、QTP では Qtp Function Libraries (QFL) を .qfl または .vbs ファイルとしてロードすることもできます。
function
、const
またはプライベートな 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
パブリックとプライベートの問題は、クラス内で使用される場合にのみ問題になります。VBScriptクラス内では、関数はデフォルトでパブリックであるため、2つの間に違いはありません。Privateを使用すると、クラスの外部から関数にアクセスできなくなります。