工控隨筆_18_西門子_WinCC的VBS腳本_07_變量做用域和傳值、傳址

  在vbs腳本中也存在和其餘編程語言同樣的概念,那就是變量的做用域,變量的做用域決html

定在什麼範圍內能夠訪問。編程

  一樣的在vbs腳本中對於變量也有一個生命週期, 變量的生命週期決定了變量的存續時間編程語言

這個主要是對於類的實例化對象有意義。函數

  vbs的函數和過程對參數變量進行讀寫的時候,在利用byVal和byRef的行爲是不一樣的。spa

具體很少說,看代碼。指針

 

1、代碼code

' vbs變量的做用域和生命週期

'  做用域
'一、vbs的變量有三種做用域: 腳本級做用域、過程級做用域、類級做用域
'二、vbs變量的做用域與三個關鍵字有關: Dim、Private、Public
'三、通常Private、Public用在類中, dim用在腳本級和過程級中
'四、關於Private和Public在後面類中進行描述

Option Explicit 

'定義腳本級變量
'腳本級變量在整個腳本均可用
Dim strUserName
strUserName = "volcanol"

'調用方法訪問腳本級變量,
DisplayGlobalVarible

DisplayUserName


Sub DisplayUserName()
    '定義過程級變量,且這個變量與外面的變量同名,
    '所以這個變量就將
    Dim strUserName
    strUserName = InputBox("輸入名字")
    MsgBox strUserName
End Sub

Sub DisplayGlobalVarible()
    '訪問全局變量
    MsgBox strUserName
End Sub


'變量的生命週期
'一、腳本級的變量的生命週期是腳本運行的整個期間
'二、過程或者函數級變量的生命週期是函數、過程調用的整個期間
'三、類級的變量生命週期是類的對象存續的期間
'具體這個就不說了, 慢慢體會吧


'函數、過程調用的傳值byval和傳址byref
'
'一、byval 就和C語言中的普通參數同樣,對原參數不會進行修改
'二、byref 就和C語言中的指針參數同樣,能夠對原參數進行修改,
'   固然,若是byref不進行賦值操做的話,也不會進行修改

Dim lngByVal
Dim lngByRef

lngByVal = 10
lngByRef = 20

'調用傳值參數,不改變原來的參數
subByVal lngByVal

'調用傳址參數,改變原來的值
subByref lngByRef

MsgBox lngByVal & vbNewLine & lngByRef


'說明一點, 對於傳址調用的檢查不能保證100%的有效果
'這裏,按照正經常使用法,應該傳遞變量
subByRef 10

 
'傳值參數
Sub subByVal(byval lngPar)
    lngpar = lngpar + 100
End Sub

'傳址參數
Sub subByRef(byref lngPar)
    lngpar = lngpar + 200
End Sub

 

 

2、Tipshtm

一、變量的做用域越大,引發的bug的可能性越大,所以最好不要輕易修改腳本級的變量。對象

二、傳值、傳址這個須要注意,通常狀況下最好用傳值blog

三、若是一個函數或者過程只須要返回一個值,那麼就用函數返回至,而不要用過程使用

ByRef的方式來返回值。

 

--------------------------------------------------------------分割線---------------------------------------------------------------

一、文章均爲我的原創,歡迎轉載,轉載請保留出處:https://www.cnblogs.com/volcanol/

二、獲取工控PLC、變頻器、HMI、計算機、Windows、Linux、嵌入式資料點擊:獲取資料

三、若是您以爲文章對您有幫助可轉至頁面上半部分打賞,或移步:打賞 

四、或者在頁面右下角點推薦喲!!!

--------------------------------------------------------------分割線---------------------------------------------------------------

相關文章
相關標籤/搜索