M语言-数据类型
?
目錄
1.字符串
2.數(shù)字
3.小數(shù)
4.對象
5.布爾類型
6.日期
????????Cache ObjectScript是一種無類型語言,不必聲明變量的類型。任何變量都可以有字符串、數(shù)值或?qū)ο笾怠?/p>
1.字符串
- 最大字符串大小是可配置的。默認情況下啟用長字符串,長字符串的最大字符串大小是3641144個字符,否則最大字符串大小為32767個字符。可在Management Portal的【系統(tǒng)管理】-【配置】-【系統(tǒng)配置】-【內(nèi)存和啟動】里面配置是否啟用長字符串
- 字符串可以包含任何字符,包括空格和控制字符。
- 字符串長度指的是字符數(shù),而不是字節(jié)數(shù)
- 可以使用$c($char縮寫),來指定不可輸入的字符
- 如果要在字符串中包含引號字符("),則需要兩個“”,兩個“”代表一個”
- 不包含任何值的字符串稱為空字符串。它由兩個引號表示。空字符串被視為已定義的值,它的長度是0。空字符串和$c(0)不同,如下所示:
- 可以使用連接運算符(_)將兩個或多個字符串連接在一起。
- 可以使用等于(=)和不等于('=)運算符來比較兩個字符串。字符串的比較區(qū)分大小寫。如果字符串為數(shù)字,則只有包含規(guī)范形式的數(shù)字的字符串才等于其相應(yīng)地數(shù)字(-0不是規(guī)范數(shù)字)
- >、<、<=、或>=運算符不能用于字符串的比較。這些運算符將字符串視為數(shù)字,并始終執(zhí)行數(shù)字比較。使用這些運算符進行比較時,將任何非數(shù)字字符串分配數(shù)值0
2.數(shù)字
- 數(shù)字前面和后面可以加0
- 字母E,用于科學計數(shù)法:
- 數(shù)字前面可以加+和-。但是不能出現(xiàn)在除了科學計數(shù)法E之外的其他字符的后面
- Cache將數(shù)字轉(zhuǎn)換為規(guī)范形式時,會將數(shù)字前面和后面的0去掉。使用$fn和$justify,將去掉的0恢復,并可以指定保留幾位小數(shù)
- 對于算術(shù)運算、大于/小于運算,如果字符串是規(guī)范形式的數(shù)字,則在功能上與相應(yīng)地數(shù)字相同
- 混合數(shù)字字符串:指的是以數(shù)字字符開頭,后面跟一個或多個非數(shù)字字符的字符串。在進行數(shù)值或布爾運算時(等式運算除外),將會從前往后匹配,如果遇到不規(guī)范非數(shù)字字符,則停止匹配,后面的字符將會被忽略。
- 非數(shù)字字符串:指的是再遇到數(shù)字字符串之前,遇到的非數(shù)字字符串的任何字符串,空格也被視為非數(shù)字字符串。數(shù)值和布爾運算通常會將非數(shù)字字符串解析為數(shù)值0
- 可以使用連接運算符(_)將多個數(shù)字連接起來。Cache會首先將每個數(shù)字轉(zhuǎn)換為其規(guī)范形式,然后對結(jié)果執(zhí)行字符串連接
3.小數(shù)
- 默認情況下,Cache使用$decimal表示浮點小數(shù)。它提供最高級別的精度,保留19位。
- $double表示雙精度浮點小數(shù)。它的精度為53個二進制位,相等于只能保證小數(shù)后16位精度。支持特殊值INF(無窮大)和NAN(非數(shù)字)
??????? 從上面可以看出,在第17位時,開始不準確。
?
- Cache中,最大整數(shù)范圍為:-9223372036854775808和9223372036854775807。如果對最大整數(shù)增加值,則會進行四舍五入,將低位數(shù)字替換為0
4.對象
- 通過%New命令,定義一個對象
- 使用$isobject判斷是否為對象
- 定義多個同一個對象時,會產(chǎn)生增加對象的內(nèi)部引用計數(shù)
- 當對象的引用數(shù)量為0時,Cache會自動銷毀該對象(調(diào)用%OnClose()方法,并將其從內(nèi)存中移除)。OnClose()方法如下:
5.布爾類型
??????? 在M語言中,布爾類型為1(true)和0(false)。
ClassMethod MyFunction() {set num = 1// 輸出trueif (num) {w "true",! }else{w "false",!}// 輸出trueif 0.5 {w "true",! }else{w "false",!}// 輸出trueif "1 num" {w "true",! }else{w "false",!}// 輸出0w "007"=7,!// 輸出0w "+007"=7,!// 輸出1w +"007"=7,!// 輸出falseif "num" {w "true",! }else{w "false",!} }6.日期
??????? Global中的日期和時間都是以數(shù)字的形式存儲的。
- ObjectScript沒有內(nèi)置的日期類型,但是它由很多函數(shù),用于操作和格式化表示為字符串的日期值
- $horolog(縮寫$h):包含了當前進程的本地日期和時間,以逗號(,)分隔。第一部分是日期的數(shù)字,它是從1840年12月31日開始計算的數(shù)字;第二部分是秒的數(shù)字,它是從午夜開始計算的。
- $now:返回當前日期的本地日期和時間,以小數(shù)秒為單位
- $zdate(縮寫$zd):驗證日期,并將其從數(shù)字格式轉(zhuǎn)換為顯示指定的日期格式
- $zdateh(縮寫$zdh):將日期格式轉(zhuǎn)換為時間格式
$zd(日期數(shù)字,格式)->日期
$zdh(日期,格式) -> 數(shù)字
// 輸出08/07/2022 w $zdate($horolog),! // 輸出2022-08-07 w $zd($horolog, 3),!// 輸出66328 w $zdateh("08/07/2022"),! // 輸出66328 w $zdh("2022-08-07", 3),! // T表示當天, 輸出66328 w $zdh("T", 5),!- $ztime(縮寫$zt):驗證時間,并將其從數(shù)字格式轉(zhuǎn)換為顯示指定的時間格式
- $ztimeh(縮寫$zth):將時間格式轉(zhuǎn)換為時間格式
$zt(時間數(shù)字,格式)->時間
$zth(時間,格式) -> 數(shù)字
// 輸出14:27:02 w $ztime($p($horolog, ",", 2)),!// 輸出02:27:02PM w $zt($p($horolog, ",", 2), 3),!// 輸出52022 w $ztimeh("14:27:02"),! // 輸出52022 w $zth("02:27:02PM", 3),!- $zdatetime(縮寫$zdt):驗證日期和時間,將數(shù)字轉(zhuǎn)換為日期和時間
$zdt(日期和時間數(shù)字,格式)->日期和時間
$zdth(日期和時間,格式) ->日期和時間數(shù)字
// 輸出08/07/2022 14:33:36 w $zdatetime($h),! // 輸出2022-08-07 14:33:36 w $zdt($h, 3),!// 輸出66328,52416 w $zdatetimeh("08/07/2022 14:33:36"),! // 輸出66328,52416 w $zdatetimeh("2022-08-07 14:33:36", 3),! // 輸出66328,0 w $zdth("T", 5),!- $zhorolog(縮寫$zh):返回啟動Cache庫以來,經(jīng)過的秒數(shù)。
????????$zhorolog還可以用于計算程序運行的時間:
set t1 = $zh//等待2秒鐘 hang 2set t2 = $zh// 輸出2.000593 w t2 - t1總結(jié)
- 上一篇: Qt显示一张图片
- 下一篇: 武汉青少年计算机编程,武汉青少年编程学习