日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

M语言-数据类型

發(fā)布時間:2024/3/13 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 M语言-数据类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

目錄

1.字符串

2.數(shù)字

3.小數(shù)

4.對象

5.布爾類型

6.日期


????????Cache ObjectScript是一種無類型語言,不必聲明變量的類型。任何變量都可以有字符串、數(shù)值或?qū)ο笾怠?/p>

1.字符串

  • 最大字符串大小是可配置的。默認情況下啟用長字符串,長字符串的最大字符串大小是3641144個字符,否則最大字符串大小為32767個字符。可在Management Portal的【系統(tǒng)管理】-【配置】-【系統(tǒng)配置】-【內(nèi)存和啟動】里面配置是否啟用長字符串
// 輸出字符串的最大長度 w $system.SYS.MaxLocalLength()
  • 字符串可以包含任何字符,包括空格和控制字符。
  • 字符串長度指的是字符數(shù),而不是字節(jié)數(shù)
// 輸出11 w $length("hello world")
  • 可以使用$c($char縮寫),來指定不可輸入的字符
ClassMethod MyFunction10() {set str = "abc"/// zzdump輸出Ascall碼zzdump str/// $c(0)代表空,$c(9)代表tab建(制表符),$c(10)代表換行,$c(13)代表回車w "",!set str = "a"_$c(0)_"bb"_$c(9)_"c"_$c(10)_"d"_$c(13)_"e"// 輸出結(jié)果為:a bb c// d// ew str }
  • 如果要在字符串中包含引號字符("),則需要兩個“”,兩個“”代表一個”
// 輸出" w """",!// 輸出"" w """"""set str = "hello ""world""" // 輸出hello "world" w str
  • 不包含任何值的字符串稱為空字符串。它由兩個引號表示。空字符串被視為已定義的值,它的長度是0。空字符串和$c(0)不同,如下所示:
ClassMethod MyFunction() {set str = ""// 輸出0w "空字符串長度:"_$length(str),!set str = $c(0)// 輸出1w "$c(0)字符串長度:"_$length(str) }
  • 可以使用連接運算符(_)將兩個或多個字符串連接在一起。
// 輸出helloworld! w "hello"_"world"_"!"
  • 可以使用等于(=)和不等于('=)運算符來比較兩個字符串。字符串的比較區(qū)分大小寫。如果字符串為數(shù)字,則只有包含規(guī)范形式的數(shù)字的字符串才等于其相應(yīng)地數(shù)字(-0不是規(guī)范數(shù)字)
ClassMethod MyFunction() {// 輸出1w "hello" = "hello"// 輸出0w "world" '= "world"// 輸出0w "-8" = 8,!// 輸出1w "8" = 008.00,!// 輸出1w "-8" = -8// 輸出0w "-0" = 0,!// 輸出0w "-0" = -0 }
  • >、<、<=、或>=運算符不能用于字符串的比較。這些運算符將字符串視為數(shù)字,并始終執(zhí)行數(shù)字比較。使用這些運算符進行比較時,將任何非數(shù)字字符串分配數(shù)值0
// 輸出0 w "x" > 1 // 輸出1 w "2x" > 1 // 輸出0 w "x2x" > 1

2.數(shù)字

  • 數(shù)字前面和后面可以加0
// 輸出9 w 0009.00
  • 字母E,用于科學計數(shù)法:
// 輸出 35000000000 w 3.5E10
  • 數(shù)字前面可以加+和-。但是不能出現(xiàn)在除了科學計數(shù)法E之外的其他字符的后面
ClassMethod MyFunction14() {// 輸出-200w -2E2,!// 輸出-.02w -2E-2,!// 輸出-200w -2E+2,!// 輸出200w 2E+2,!// 輸出.02w 2E-2,! }
  • Cache將數(shù)字轉(zhuǎn)換為規(guī)范形式時,會將數(shù)字前面和后面的0去掉。使用$fn和$justify,將去掉的0恢復,并可以指定保留幾位小數(shù)
// 輸出.066 w 0.066000,!//使用$fn和$justify,將去掉的0恢復,并可以指定保留幾位小數(shù) // 輸出0.066 w $fn(.066, "N", 3),! // 輸出0.0660 w $justify(.066, "N", 4)
  • 對于算術(shù)運算、大于/小于運算,如果字符串是規(guī)范形式的數(shù)字,則在功能上與相應(yīng)地數(shù)字相同
ClassMethod Number() {set x = 0009.00// 輸出1w "數(shù)字長度:"_$length(x),!// 輸出9w "數(shù)字值:"_x,!// 輸出1w "是否與9相等:",x=9,!// 輸出10w "+1:",x+1,!// 定義數(shù)字字符串set y = "0009.00"// 輸出7w "數(shù)字長度:"_$length(y),!// 輸出0009.00w "數(shù)字值:"_y,!// 輸出0w "是否與9相等:",y=9,!// 輸出10w "+1:",y+1,!//輸出1w "003"+3 = 6,!//輸出1w "++-3" + -3 = -6,!//輸出1w "003" > 2,!//輸出1w "++-003" >= -3 }
  • 混合數(shù)字字符串:指的是以數(shù)字字符開頭,后面跟一個或多個非數(shù)字字符的字符串。在進行數(shù)值或布爾運算時(等式運算除外),將會從前往后匹配,如果遇到不規(guī)范非數(shù)字字符,則停止匹配,后面的字符將會被忽略。
ClassMethod Command() {// 輸出24w "22 hello" + 2,!// 輸出24w "+22/77" + 2,!// 輸出24w "22.000" + 2,!// 輸出24.5w "22.5.99" + 2,!// 輸出24w "22.s.8" + 2,! }
  • 非數(shù)字字符串:指的是再遇到數(shù)字字符串之前,遇到的非數(shù)字字符串的任何字符串,空格也被視為非數(shù)字字符串。數(shù)值和布爾運算通常會將非數(shù)字字符串解析為數(shù)值0
ClassMethod MyFunction() {// 輸出1w +"8" = 8,!// 輸出1w +"+0008" = 8,!// 輸出1w +"8 num" = 8,!// 輸出1w +"num" = 0,!// 輸出1w +"" = 0,! }
  • 可以使用連接運算符(_)將多個數(shù)字連接起來。Cache會首先將每個數(shù)字轉(zhuǎn)換為其規(guī)范形式,然后對結(jié)果執(zhí)行字符串連接
ClassMethod MyFunction() {// 輸出1234w 12_34,!// 輸出1234w 12_+34,!// 輸出1234w 12_--34,!// 輸出12.0134w 12.01_34,!// 輸出.0134w 0.01_34,!// 輸出1234.55w 12_0034.55,!// 輸出12034w 12E1_34,!// 輸出1212.3w 12_"12.3" }

3.小數(shù)

  • 默認情況下,Cache使用$decimal表示浮點小數(shù)。它提供最高級別的精度,保留19位。
ClassMethod MyFunction2() {// 輸出.3333333333333333333w 1/3,!// 輸出.3333333333333333333w $decimal(1/3),!// NAN表示非數(shù)字,輸出0w $decimal("NAN"),!// INF表示無窮大,輸出0w $decimal("INF"),! }
  • $double表示雙精度浮點小數(shù)。它的精度為53個二進制位,相等于只能保證小數(shù)后16位精度。支持特殊值INF(無窮大)和NAN(非數(shù)字)
ClassMethod MyFunction3() {// 輸出.33333333333333331482w $double(1/3),!// 輸出NANw $double("NAN"),!// 輸出INFw $double("INF"),! }

??????? 從上面可以看出,在第17位時,開始不準確。

?

  • Cache中,最大整數(shù)范圍為:-9223372036854775808和9223372036854775807。如果對最大整數(shù)增加值,則會進行四舍五入,將低位數(shù)字替換為0
ClassMethod MyFunction4() {// 輸出9223372036854775810w 9223372036854775807+1,!// 輸出9223372036854775830w 9223372036854775807+23,!// 輸出9223372036854775830w 9223372036854775807+25,!// 輸出1w (9223372036854775807+23)=(9223372036854775807+25),! }

4.對象

  • 通過%New命令,定義一個對象
Class Demo.Obj Extends %RegisteredObject {Property Name As %String;/// d ##class(Demo.Obj).Command() ClassMethod Command() {// 定義對象,將對象的引用給obj變量set obj = ##class(Obj).%New()// 輸出15@Demo.Objw obj,! }}
  • 使用$isobject判斷是否為對象
// 輸出1 w $isobject(obj)// 輸出0 w $isObject("123")
  • 定義多個同一個對象時,會產(chǎn)生增加對象的內(nèi)部引用計數(shù)
set obj = ##class(Obj).%New() // 輸出16@Demo.Obj w obj,!set obj2 = ##class(Obj).%New() // 輸出16@Demo.Obj w obj2,!/* 輸出如下: obj=<OBJECT REFERENCE>[15@Demo.Obj] +----------------- general information --------------- | oref value: 16 | class name: Demo.Obj | reference count: 2 +----------------- attribute values ------------------ | Name = "" +----------------------------------------------------- */ zw obj2
  • 當對象的引用數(shù)量為0時,Cache會自動銷毀該對象(調(diào)用%OnClose()方法,并將其從內(nèi)存中移除)。OnClose()方法如下:
/// This callback method is invoked by the <METHOD>%Close</METHOD> method to /// provide notification that the current object is being closed. /// /// <P>The return value of this method is ignored. Method %OnClose() As %Status [ Private, ServerOnly = 1 ] {Quit $$$OK }

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ù)字,它是從午夜開始計算的。
ClassMethod MyFunction() {// 輸出66328,46923w $horolog,! }
  • $now:返回當前日期的本地日期和時間,以小數(shù)秒為單位
// 輸出66328,51253.643677 w $now(),!
  • $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ù)。
// 輸出101268.602726 w $zhorolog,!// 輸出28.13016890888888889 w $zhorolog/3600,!

????????$zhorolog還可以用于計算程序運行的時間:

set t1 = $zh//等待2秒鐘 hang 2set t2 = $zh// 輸出2.000593 w t2 - t1

總結(jié)

以上是生活随笔為你收集整理的M语言-数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。