工控隨筆_12_西門子_WinCC的VBS腳本_03_變量類型

  說到編程語言,老是繞不開數據類型,由於數據類型決定了數據能夠進行什麼樣的操做。同時數據類型html

從廣義上來講是一種數據結構,在過程式編程的過程當中,曾經有過這樣一種說法:算法

程序 = 數據結構 + 算法

  可見數據類型的重要性。大致來講,編程語言有三種: 強類型語言, 弱類型語言,介於二者之間的語言。編程

強類型語言要求變量定義的時候必須明確數據類型,弱類型語言不要求在變量定義時明確數據類型。數據結構

1、強類型語言、弱類型語言編程語言

  咱們所知的C語言系的語言都要求變量定義時明確數據類型,例如C語言、C++、Java語言等都是強類型函數

語言。 而VBS等腳本語言,則是弱類型的語言。 這就決定了vbs定義變量時不須要明確數據類型。測試

  下面是各類語言定義變量時的語法。spa

//我是C語言,我是強類型語言

//定義變量時肯定數據類型
int  nAge;   

 

//我是C++, 我也是強類型語言

class A
{

};

//類實例化的時候須要指定對象的類型
A  objectA;

 

//我是Delphi的Pascal, 我也是強類型語言

//定義變量須要指定類型
var 
    nPage:integer;

 

'我是vbs,我是弱類型語言

'定義變量不須要指定數據類型
Dim varTest

 

2、vbs的數據類型code

  這篇文章咱們簡單的來描述一下vbs中數據類型的相關內容。htm

'vbs中的數據類型
'vbs腳本中的數據只有一種數據類型,就是variant
'能夠將vbs變量當作一個具備AI功能的容器,能夠識別不一樣的數據類型
'更準確的是:
'一、vbs只有一種數據類型variant
'二、vbs變量的數據類型都對應一個子類型
'三、能夠將variant當作一個基類,子數據類型當作派生類,
'四、vbs是具備OOP特性的一種腳本編程語言
'五、vbs變量在同一時刻,只能表示一種數據類型,或者說只能存儲一種
'   數據類型的數據; 不能既存儲Long型又同時存儲string型字符串
'六、vbs變量能夠自動爲存儲的數據選擇合適的數據類型
'七、這裏須要說道賦值運算,當一個變量第一次賦值的時候,vbs就假定
'   這個變量的數據類型爲賦值時的子類型。除非再一次賦值,不然就一直
'   保持第一次賦值的子類型不變



'vbs中的數據類型檢測函數
'一、vartype 函數, 這個函數返回數據類型的常量信息
'二、typename 函數,這個函數返回數據類型的字符串信息
Dim var
var = 10
MsgBox VarType(var)
MsgBox TypeName(var)

var = "volcanol"
MsgBox VarType(var)
MsgBox TypeName(var)

'關於輸入對話框InputBox的輸入處理
'InputBox輸入對話框返回的是字符串
Dim strDataType
MsgBox TypeName(InputBox("請輸入最大年齡的數值","最大年齡","150"))

'這裏須要注意isnumeric函數檢查輸入的變量是否都是數字
'若是都是由 0-9 之間的數字組成的,那麼返回True,不然返回false
'這一點須要注意
If IsNumeric(InputBox("測試輸入的值是不是數值","輸入數值")) Then
    MsgBox "測試isnumeric函數的做用"
End If


'在vbs中也有與C語言中同樣的類型轉換:強制類型轉換、隱式類型轉換
'強制類型轉換經過函數實現
'隱式類型轉換vbs會自動完成
'再看下面的例子,由於nMaxAge要進行算術減法,因此vbs腳本引擎會將
'nMaxAge解釋爲一個int型數據
Dim nMaxAge
Dim nMinAge
Dim nDiffAge
'第一次賦值的時候,nMaxAge是string類型
nMaxAge = InputBox("請輸入最大年齡的數值","最大年齡","200")
'第一次賦值的時候
nMinAge = 0
MsgBox "第一次賦值後 nMinAge的類型是:" & TypeName(nMinAge)
'這個地方要進行計算,- 須要的是數字類型,這個地方表達式中
'會將 nMaxAge 的 string類型隱式類型轉換爲 double 類型,
'而後再與nMinAge 進行計算. 須要注意的是隱式類型時的要點。
nDiffAge = nMaxAge - nMinAge
MsgBox nDiffAge
MsgBox "nDiffAge數據類型是:" & TypeName(nDiffAge)

'下面表達式的類型是integer
MsgBox "1 + 2 表達式的類型是: " & TypeName(1+2)


'日期和時間類型
MsgBox Date()
MsgBox TypeName(Date())
MsgBox Time()
MsgBox TypeName(Time())

'注意日期類型常量的使用兩個##符號引用起來的一個字符串,
'就和下面的例子同樣
MsgBox TypeName(#2018/11/23#)
MsgBox "日期的數值是:" & CLng(#2018/11/23#)
MsgBox "數字65535對應的日期是:" & CDate(65535)
MsgBox "數字0對應的日期是:" & CDate(0)
MsgBox #1970/1/1#


'注意時間的常量與日期常量的不一樣
MsgBox TypeName("14:19:29")


'前面咱們說過 & 和 + 均可以進行字符串的鏈接
'由於 + 符號還能夠做爲加法運算符,所以這裏須要注意在
'使用過程當中的隱式類型轉換
'例如咱們想輸出一個 100234 的字符串
Dim strTest
Dim nTest
strTest = CStr(100)
nTest = 234
'不能輸出字符串
MsgBox strTest + nTest
'能夠輸出字符串
MsgBox strTest & nTest

'*******************************************
' + 符號的規則
' 一、若是兩邊都是數字,按照數字計算
' 二、若是一邊是數字類型,則看另外一邊是否能隱式類型轉換爲數字
'    若是能隱式類型轉換,則按照數字計算加法求和, 不然就報錯
'
' 三、若是兩邊都是字符串,那麼就鏈接字符串
'
' 四、字符串類型最好用 & 進行鏈接


'Empty 和 NULL
'若是一個變量未進行初始化則其類型爲Empty
Dim varEmpty
MsgBox TypeName(varEmpty)
'下面的函數調用也進行了隱式類型轉換,將empty類型的變量轉換爲string類型
MsgBox varEmpty

If IsEmpty(varEmpty) Then
    MsgBox "varEmpty變量未初始化"
End If

'這裏還須要注意的是empty這個常量,
varEmpty = Empty
If IsEmpty(Empty) Then 
    MsgBox "varEmpty = Empty 賦值後,已經初始化"
Else
    MsgBox "varEmpty = Empty賦值後,已經初始化,這一段不執行"
End If

If varEmpty = Empty Then
    MsgBox "varEmpty = Empty 後,其值就是Empty,執行這一段"
Else
    MsgBox "varEmpty = Empty後,其值是Empty,邏輯結果爲真,這一段不執行"
End If


Dim varNull 
varNull = Null
MsgBox TypeName(varNull)
'下面的語句不能執行,這個地方就是NULL和empty的區別
'並且通常只有顯示的給變量賦值爲NULL,變量的值纔是NULL
'MsgBox varNull

If IsNull(varNull) Then
    MsgBox "varNull變量的值是NULL"
End If

If IsEmpty(varNull) Then
    MsgBox "varNull變量沒有初始化"
Else
    MsgBox "varNull變量已經初始化"
End If

 

  上面的代碼由一個地方須要注意,就是124行那一句,若是直接用msgbox Null 的話會報錯。以下面的圖

所示:

 

 

3、Tips

  雖然vbs是一種弱類型的語言,可是這並不妨礙咱們編寫出合格的健壯的代碼。 這裏有幾個要點能夠

提升代碼健壯性。

  一、一個變量只用來作一件事。

  二、利用匈牙利命名法來實現代碼的自描述,經過增長前綴來講明變量的類型。

  三、變量在初始化的時候儘可能進行強制類型轉換。

  四、注意vbs的隱式類型轉換規則

  五、注意各類類型的區別。

 

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

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

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

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

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

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

相關文章
相關標籤/搜索