目录
Cache ObjectScript是一种无类型语言,不必声明变量的类型。任何变量都可以有字符串、数值或对象值。
- // 输出字符串的最大长度
- w $system.SYS.MaxLocalLength()
- // 输出11
- w $length("hello world")
- 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"
-
- // 输出结果为:a bb c
- // d
- // e
- w str
- }
- // 输出"
- w """",!
-
- // 输出""
- w """"""
- set str = "hello ""world"""
- // 输出hello "world"
- w str
- ClassMethod MyFunction()
- {
- set str = ""
- // 输出0
- w "空字符串长度:"_$length(str),!
-
- set str = $c(0)
- // 输出1
- w "$c(0)字符串长度:"_$length(str)
- }
- // 输出helloworld!
- w "hello"_"world"_"!"
- ClassMethod MyFunction()
- {
- // 输出1
- w "hello" = "hello"
-
- // 输出0
- w "world" '= "world"
- // 输出0
- w "-8" = 8,!
- // 输出1
- w "8" = 008.00,!
- // 输出1
- w "-8" = -8
- // 输出0
- w "-0" = 0,!
- // 输出0
- w "-0" = -0
- }
- // 输出0
- w "x" > 1
- // 输出1
- w "2x" > 1
- // 输出0
- w "x2x" > 1
- // 输出9
- w 0009.00
- // 输出 35000000000
- w 3.5E10
- ClassMethod MyFunction14()
- {
- // 输出-200
- w -2E2,!
- // 输出-.02
- w -2E-2,!
- // 输出-200
- w -2E+2,!
- // 输出200
- w 2E+2,!
- // 输出.02
- w 2E-2,!
- }
- // 输出.066
- w 0.066000,!
-
- //使用$fn和$justify,将去掉的0恢复,并可以指定保留几位小数
- // 输出0.066
- w $fn(.066, "N", 3),!
- // 输出0.0660
- w $justify(.066, "N", 4)
- ClassMethod Number()
- {
- set x = 0009.00
- // 输出1
- w "数字长度:"_$length(x),!
- // 输出9
- w "数字值:"_x,!
- // 输出1
- w "是否与9相等:",x=9,!
- // 输出10
- w "+1:",x+1,!
-
- // 定义数字字符串
- set y = "0009.00"
- // 输出7
- w "数字长度:"_$length(y),!
- // 输出0009.00
- w "数字值:"_y,!
- // 输出0
- w "是否与9相等:",y=9,!
- // 输出10
- w "+1:",y+1,!
-
-
- //输出1
- w "003"+3 = 6,!
- //输出1
- w "++-3" + -3 = -6,!
-
- //输出1
- w "003" > 2,!
- //输出1
- w "++-003" >= -3
- }
-
- ClassMethod Command()
- {
- // 输出24
- w "22 hello" + 2,!
-
- // 输出24
- w "+22/77" + 2,!
-
- // 输出24
- w "22.000" + 2,!
-
- // 输出24.5
- w "22.5.99" + 2,!
-
- // 输出24
- w "22.s.8" + 2,!
- }
- ClassMethod MyFunction()
- {
- // 输出1
- w +"8" = 8,!
-
- // 输出1
- w +"+0008" = 8,!
-
- // 输出1
- w +"8 num" = 8,!
-
- // 输出1
- w +"num" = 0,!
-
- // 输出1
- w +"" = 0,!
- }
- ClassMethod MyFunction()
- {
- // 输出1234
- w 12_34,!
-
- // 输出1234
- w 12_+34,!
-
- // 输出1234
- w 12_--34,!
-
- // 输出12.0134
- w 12.01_34,!
-
- // 输出.0134
- w 0.01_34,!
-
- // 输出1234.55
- w 12_0034.55,!
-
- // 输出12034
- w 12E1_34,!
-
- // 输出1212.3
- w 12_"12.3"
- }
- ClassMethod MyFunction2()
- {
- // 输出.3333333333333333333
- w 1/3,!
-
- // 输出.3333333333333333333
- w $decimal(1/3),!
-
- // NAN表示非数字,输出0
- w $decimal("NAN"),!
-
- // INF表示无穷大,输出0
- w $decimal("INF"),!
- }
- ClassMethod MyFunction3()
- {
- // 输出.33333333333333331482
- w $double(1/3),!
-
- // 输出NAN
- w $double("NAN"),!
-
- // 输出INF
- w $double("INF"),!
- }
从上面可以看出,在第17位时,开始不准确。
- ClassMethod MyFunction4()
- {
- // 输出9223372036854775810
- w 9223372036854775807+1,!
-
- // 输出9223372036854775830
- w 9223372036854775807+23,!
-
- // 输出9223372036854775830
- w 9223372036854775807+25,!
-
- // 输出1
- w (9223372036854775807+23)=(9223372036854775807+25),!
- }
- Class Demo.Obj Extends %RegisteredObject
- {
-
- Property Name As %String;
-
- /// d ##class(Demo.Obj).Command()
- ClassMethod Command()
- {
- // 定义对象,将对象的引用给obj变量
- set obj = ##class(Obj).%New()
-
- // 输出15@Demo.Obj
- w obj,!
- }
-
- }
- // 输出1
- w $isobject(obj)
-
- // 输出0
- w $isObject("123")
- set obj = ##class(Obj).%New()
- // 输出16@Demo.Obj
- w obj,!
-
- set obj2 = ##class(Obj).%New()
- // 输出16@Demo.Obj
- w obj2,!
-
- /* 输出如下:
- obj=
- +----------------- general information ---------------
- | oref value: 16
- | class name: Demo.Obj
- | reference count: 2
- +----------------- attribute values ------------------
- | Name = ""
- +-----------------------------------------------------
- */
- zw obj2
- /// This callback method is invoked by the
%Close method to - /// provide notification that the current object is being closed.
- ///
- ///
The return value of this method is ignored.
- Method %OnClose() As %Status [ Private, ServerOnly = 1 ]
- {
- Quit $$$OK
- }
在M语言中,布尔类型为1(true)和0(false)。
- ClassMethod MyFunction()
- {
- set num = 1
- // 输出true
- if (num) {
- w "true",!
- }else{
- w "false",!
- }
-
- // 输出true
- if 0.5 {
- w "true",!
- }else{
- w "false",!
- }
-
- // 输出true
- if "1 num" {
- w "true",!
- }else{
- w "false",!
- }
-
- // 输出0
- w "007"=7,!
-
- // 输出0
- w "+007"=7,!
-
- // 输出1
- w +"007"=7,!
-
- // 输出false
- if "num" {
- w "true",!
- }else{
- w "false",!
- }
- }
Global中的日期和时间都是以数字的形式存储的。
- ClassMethod MyFunction()
- {
- // 输出66328,46923
- w $horolog,!
- }
- // 输出66328,51253.643677
- w $now(),!
$zd(日期数字,格式)->日期
$zdh(日期,格式) -> 数字
- // 输出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),!
$zt(时间数字,格式)->时间
$zth(时间,格式) -> 数字
- // 输出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),!
$zdt(日期和时间数字,格式)->日期和时间
$zdth(日期和时间,格式) ->日期和时间数字
- // 输出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),!
- // 输出101268.602726
- w $zhorolog,!
-
- // 输出28.13016890888888889
- w $zhorolog/3600,!
$zhorolog还可以用于计算程序运行的时间:
- set t1 = $zh
-
- //等待2秒钟
- hang 2
-
- set t2 = $zh
-
- // 输出2.000593
- w t2 - t1