布爾(對應C#的bool)表示是/否兩種狀態,對應關鍵字true、false。對象(對應C#的object)表示任意對象,是所有類型的基類型,關鍵字null表示空對象。Object 在S#中有大量的使用,用的好了熟了會讓你領悟:看山是山;看山不是山;看山還是山。 ...
ShoneSharp語言(S#)的設計和使用介紹
系列(7)— 布爾Bool及對象Object
作者:Shone
聲明:原創文章歡迎轉載,但請註明出處,https://www.cnblogs.com/ShoneSharp。
摘要: 布爾值(對應C#的bool)表示是/否兩種狀態,對應關鍵字true、false。對象(對應C#的object)表示任意對象,是所有類型的基類型,關鍵字null表示空對象。Object 在S#中有大量的使用,用的好了熟了會讓你領悟:看山是山;看山不是山;看山還是山。
軟體: S#語言編輯解析運行器,運行環境.NET 4.0,綠色軟體,單個EXE直接運行,無副作用。網盤下載鏈接為https://pan.baidu.com/s/1dF4e08p
寫博客還是蠻辛苦的,所以請大家再堅持一下,今天把布爾Bool及對象Object這兩個類型介紹完後,後面將進入S#比較有特色的介紹,這裡預告一下,看能不能多吸引點人氣:
系列(7) — 最炫“公式”風
系列(8) — 一等公民“函數“愛炫巧
系列(9) — 富家子弟“語句“不炫富
系列(10)— “類”披炫服靚妝化成“表”
一、布爾Bool
布爾(對應C#的bool)表示是/否兩種狀態,S#為之預留了兩個關鍵字true、false。當然你也可以輸入True/False,或是/否。
布爾值一般專門進行邏輯判斷使用,幾乎所有現代語言都支持該類型。
二、對象Object
對象(對應C#的object)表示任意對象,是所有類型的基類型,S#為之預留了一個關鍵字null,表示空對象。
編程語言素來有關於強類型與弱類型之優劣的爭辯,其根源就在於Object這種類型(C++中是指針)神一般的存在。個人對強類型與弱類型意見取中庸之道,認為都有必要支持,各有利弊之處。
Object 在S#中有大量的使用,用的好了熟了,簡直可以讓你達到參禪之境界:看山是山,看水是水;看山不是山,看水不是水;看山還是山,看水還是水。
二話不說上S#代碼:
{ 1 + 2 , 1 + [ 10 , 20 ] , [ 1 , 2 ] + 10 , [ 10 , 20 , 30 ] + [ 1 , 2 ] , cos( 30 ) , cos( [ 10 , 20 , 30 ] ) , cos( { 10 , [ 20 , 30 ] , 40 } ) , cos( { a = 10 , b = 20 , c = [ 30 , 40 ] , d = { 50 , 60 } , f = { m = 90 } } ) } //計算結果: { 3 , [ 11 , 21 ] , [ 11 , 12 ] , [ 11 , 22 , 32 ] , 0.86602540378443871 , [ 0.984807753012208 , 0.93969262078590843 , 0.86602540378443871 ] , { 0.984807753012208 , [ 0.93969262078590843 , 0.86602540378443871 ] , 0.766044443118978 } , { 0.984807753012208 , 0.93969262078590843 , [ 0.86602540378443871 , 0.766044443118978 ] , { 0.64278760968653936 , 0.5 } , { 0 } } }
下麵很多算符、函數、屬性以及方法接受的參數就是Object,表明它們可以接受多種數據類型,具體可參見成員說明。
三、常量
Bool False
說明:否
輸入:False
Bool True
說明:是
輸入:True
Object Null
說明:空值
輸入:Null
四、單目算符
! Object → Object
說明:對布爾值取反
輸入:!true
求值:False
- Object → Object
說明:對象取負
輸入:-10
~ Object → Object
說明:對數組、列表反轉
輸入:~[1,2,3]
求值:[3, 2, 1]
五、雙目算符
Object != Object → Bool
說明:判斷兩個對象值是否完全不等
輸入:5!=10
求值:True
Object ?? Object → Object
說明:非空取值
輸入:null??10
求值:10
Object < Object → Object
說明:判斷是否小於
輸入:5<10
求值:True
Object <= Object → Object
說明:判斷是否小於或等於
輸入:5<=10
求值:True
Object == Object → Bool
說明:判斷兩個對象值是否完全相等
輸入:5==10
求值:False
Object > Object → Object
說明:判斷是否大於
輸入:5>10
求值:False
Object >= Object → Object
說明:判斷是否大於或等於
輸入:5>=10
求值:False
Object % Object → Object
說明:對象相餘
輸入:10%3
求值:1
Object && Object → Object
說明:布爾值相與
輸入:true && false
求值:False
Object & Object → Object
說明:連插數組
輸入:[1,2] & [10,20]
求值:[1, 10, 20, 2]
Object * Object → Object
說明:對象相乘
輸入:5*10
求值:50
Object / Object → Object
說明:對象相除
輸入:10/3
求值:3.3333333333333335
Object ^ Object → Object
說明:對象乘方
輸入:5^3
求值:125
Object - Object → Object
說明:對象相減
輸入:5-10
求值:-5
Object | Object → Object
說明:交插數組
輸入:[1,2] | [10,20]
求值:[1, 10, 2, 20]
Object || Object → Object
說明:布爾值相或
輸入:true || false
求值:True
Object + Object → Object
說明:對象相加
輸入:5+10
求值:15
六、其他符號
Object[Double:Double] → Object
說明:獲取子元素數組
輸入:[10,20,30,40][1:2]
求值:[20, 30]
Object[Object|Object[],...] → Object
說明:獲取子元素
輸入:[10,20,30][1]
求值:20
七、函數
Bool assert(bool arg,...)
說明:斷言系列布爾值(true正常,false發生錯誤)
輸入:assert(true)
求值:True
Object abs(Object obj)
說明:求絕對值
輸入:abs(-100)
求值:100
Object acos(Object obj)
說明:求反餘弦角度值
輸入:acos(0.5)
求值:60
Object acosh(Object obj)
說明:求反雙曲餘弦弧度值
輸入:acosh(1.5)
求值:0.96242365011920694
Object actg(Object obj)
說明:求反反切角度值
輸入:actg(1)
求值:45
Object actgh(Object obj)
說明:求反雙曲反切弧度值
輸入:actgh(1.5)
求值:0.80471895621705014
Object among(Object t, Double d1, Double d2)
說明:求[d1,d2]區間參量t的線性插值
輸入:among(0,8,0.25)
求值:8
Object asin(Object obj)
說明:求反正弦角度值
輸入:asin(0.5)
求值:30
Object asinh(Object obj)
說明:求反雙曲正弦弧度值
輸入:asinh(0.5)
求值:0.48121182505960347
Object atg(Object obj)
說明:求反正切角度值
輸入:atg(1)
求值:45
Object atgh(Object obj)
說明:求反雙曲正切弧度值
輸入:atgh(0.5)
求值:0.54930614433405489
Object ceil(Object obj)
說明:求上取整值
輸入:ceil(9.8)
求值:10
Object ceil(Object obj, Double d)
說明:求按步長上取整值
輸入:ceil(10.4,0.5)
求值:10.5
Object cos(Object obj)
說明:求角度餘弦值
輸入:cos(60)
求值:0.5
Object cosh(Object obj)
說明:求弧度雙曲餘弦值
輸入:cosh(0.5)
求值:1.1276259652063807
Object ctg(Object obj)
說明:求角度反切值
輸入:ctg(45)
求值:1
Object ctgh(Object obj)
說明:求弧度雙曲反切值
輸入:ctgh(0.5)
求值:2.1639534137386529
Object exp(Object obj)
說明:求自然冪值
輸入:exp(10)
求值:22026.465794806718
Object floor(Object obj)
說明:求下取整值
輸入:floor(9.4)
求值:9
Object floor(Object obj, Double d)
說明:求按步長下取整值
輸入:floor(10.4,0.5)
求值:10
Object lg(Object obj)
說明:求10為底對數值
輸入:lg(10)
求值:1
Object ln(Object obj)
說明:求自然對數值
輸入:ln(10)
求值:2.3025850929940459
Object log(Object obj, Double newBase)
說明:求指定底對數值
輸入:log(10,2)
求值:3.3219280948873626
Object param(Object d, Double d1, Double d2)
說明:求d對應[d1,d2]區間的參量
輸入:param(4,0,8)
求值:0.5
Object round(Object obj)
說明:求四捨五入取整值
輸入:round(10.5)
求值:11
Object round(Object obj, Double d)
說明:求按步長四捨五入取整值
輸入:round(10.4,0.5)
求值:10.5
Object sign(Object obj)
說明:求符號值
輸入:sign(-10)
求值:-1
Object sin(Object obj)
說明:求角度正弦值
輸入:sin(30)
求值:0.5
Object sinh(Object obj)
說明:求弧度雙曲正弦值
輸入:sinh(0.5)
求值:0.52109530549374738
Object sqrt(Object obj)
說明:求平方根值
輸入:sqrt(10)
求值:3.1622776601683795
Object tg(Object obj)
說明:求角度正切值
輸入:tg(45)
求值:1
Object tgh(Object obj)
說明:求弧度雙曲正切值
輸入:tgh(0.5)
求值:0.46211715726000974
Object trunc(Object obj)
說明:求截取整值
輸入:trunc(9.5)
求值:9
Object trunc(Object obj, Double d)
說明:求按步長截取整值
輸入:trunc(10.4,0.5)
求值:10
八、屬性
Object Object.cm_print
說明:列印1釐米=10mm/WcsScale
輸入:x.cm_print
Object Object.cm_unit
說明:換算1釐米=10mm
輸入:x.cm_unit
Object Object.dm_print
說明:列印1分米=100mm/WcsScale
輸入:x.dm_print
Object Object.dm_unit
說明:換算1分米=100mm
輸入:x.dm_unit
Object Object.dmm_print
說明:列印1絲米=0.01mm/WcsScale
輸入:x.dmm_print
Object Object.dmm_unit
說明:換算1絲米=0.01mm
輸入:x.dmm_unit
Object Object.ft_print
說明:列印1英尺=304.8mm/WcsScale
輸入:x.ft_print
Object Object.ft_unit
說明:換算1英尺=304.8mm
輸入:x.ft_unit
Double Object.HashCode
說明:哈希碼
輸入:x.HashCode
Object Object.in_print
說明:列印1英寸=25.4mm/WcsScale
輸入:x.in_print
Object Object.in_unit
說明:換算1英寸=25.4mm
輸入:x.in_unit
Object Object.km_print
說明:列印1公裡=1000000mm/WcsScale
輸入:x.km_print
Object Object.km_unit
說明:換算1公裡=1000000mm
輸入:x.km_unit
Object Object.m_print
說明:列印1米=1000mm/WcsScale
輸入:x.m_print
Object Object.m_unit
說明:換算1米=1000mm
輸入:x.m_unit
Object Object.mi_print
說明:列印1英里=1609344mm/WcsScale
輸入:x.mi_print
Object Object.mi_unit
說明:換算1英里=1609344mm
輸入:x.mi_unit
Object Object.mm_print
說明:列印1毫米=1mm/WcsScale
輸入:x.mm_print
Object Object.mm_unit
說明:換算1毫米=1mm
輸入:x.mm_unit
Object Object.nm_print
說明:列印1納米=0.000001mm/WcsScale
輸入:x.nm_print
Object Object.nm_unit
說明:換算1納米=0.000001mm
輸入:x.nm_unit
Object Object.nmi_print
說明:列印1海裡=1852000mm/WcsScale
輸入:x.nmi_print
Object Object.nmi_unit
說明:換算1海裡=1852000mm
輸入:x.nmi_unit
String Object.OutCsv
說明:返回對應的Csv字元串
輸入:x.OutCsv
String Object.OutStr
說明:返回對應的表示字元串
輸入:x.OutStr
String Object.SpanStr
說明:轉換為跨徑字元串
輸入:x.SpanStr
String Object.ToStr
說明:轉換為對應字元串
輸入:x.ToStr
String Object.TypeName
說明:類型名
輸入:x.TypeName
Object Object.um_print
說明:列印1微米=0.001mm/WcsScale
輸入:x.um_print
Object Object.um_unit
說明:換算1微米=0.001mm
輸入:x.um_unit
String Object.XYShortStr
說明:對應的XY簡化文本
輸入:x.XYShortStr
String Object.XYStr
說明:對應的XY文本
輸入:x.XYStr
String Object.XYZShortStr
說明:對應的XYZ簡化文本
輸入:x.XYZShortStr
String Object.XYZStr
說明:對應的XYZ文本
輸入:x.XYZStr
Object Object.yd_print
說明:列印1碼=914.4mm/WcsScale
輸入:x.yd_print
Object Object.yd_unit
說明:換算1碼=914.4mm
輸入:x.yd_unit
Object Object.尺_print
說明:列印1尺=333.33333mm/WcsScale
輸入:x.尺_print
Object Object.尺_unit
說明:換算1尺=333.33333mm
輸入:x.尺_unit
Object Object.寸_print
說明:列印1寸=33.3333333mm/WcsScale
輸入:x.寸_print
Object Object.寸_unit
說明:換算1寸=33.3333333mm
輸入:x.寸_unit
Object Object.分_print
說明:列印1分=3.3333333mm/WcsScale
輸入:x.分_print
Object Object.分_unit
說明:換算1分=3.3333333mm
輸入:x.分_unit
Object Object.釐_print
說明:列印1釐=0.3333333mm/WcsScale
輸入:x.釐_print
Object Object.釐_unit
說明:換算1釐=0.3333333mm
輸入:x.釐_unit
Object Object.里_print
說明:列印1里=500000mm/WcsScale
輸入:x.里_print
Object Object.里_unit
說明:換算1里=500000mm
輸入:x.里_unit
Object Object.丈_print
說明:列印1丈=3333.3333333mm/WcsScale
輸入:x.丈_print
Object Object.丈_unit
說明:換算1丈=3333.3333333mm
輸入:x.丈_unit
九、方法
Object Object.Mirror(Object axis)
說明:相對指定軸線鏡像
輸入:x.Mirror(axis(30))
Object Object.Mirror3d(Object plane)
說明:相對指定平面鏡像
輸入:x.Mirror3d(plane3d((0,0,0),vect3d(0,1,0)))
Object Object.Oblique(Object a)
說明:相對原點無旋轉斜交
輸入:x.Oblique(10)
Object Object.Oblique(Object a, Object oblique)
說明:相對點O旋轉傾斜,註意線段全部以直代曲,oblique=0旋轉無斜交,1旋轉斜交,2旋轉斜放,3旋轉斜垂,NaN無旋轉斜交
輸入:x.Oblique(10,1)
Object Object.ObliqueAt(Object p, Object a, Object oblique)
說明:相對點O旋轉傾斜,註意線段全部以直代曲,oblique=0旋轉無斜交,1旋轉斜交,2旋轉斜放,3旋轉斜垂,NaN無旋轉斜交
輸入:x.ObliqueAt((0,0),10,1)
Object Object.Pan(Object dx, Object dy)
說明:步長平移
輸入:x.Pan(10,10)
Object Object.Pan3d(Object dx, Object dy, Object dz)
說明:步長平移
輸入:x.Pan3d(10,10,10)
Object Object.Pan3dP(Object p)
說明:參照平移
輸入:x.Pan3dP((10,10,10))
Object Object.Pan3dV(Object v)
說明:向量平移
輸入:x.Pan3dV(vect3d(10,10,10))
Object Object.Pan3dX(Object dx)
說明:水平平移
輸入:x.Pan3dX(10)
Object Object.Pan3dY(Object dy)
說明:垂直平移
輸入:x.Pan3dY(10)
Object Object.Pan3dZ(Object dz)
說明:法向平移
輸入:x.Pan3dZ(10)
Object Object.PanLA(Object l, Object a)
說明:長度角度平移
輸入:x.PanLA(10,30)
Object Object.PanLI(Object l, Object i)
說明:長度坡度平移
輸入:x.PanLI(10,0.25)
Object Object.PanP(Object p)
說明:參照平移
輸入:x.PanP((10,10))
Object Object.PanV(Object v)
說明:向量平移
輸入:x.PanV(vect(10,10))
Object Object.PanX(Object dx)
說明:水平平移
輸入:x.PanX(10)
Object Object.PanXA(Object dx, Object a)
說明:平距角度平移
輸入:x.PanXA(10,30)
Object Object.PanXI(Object dx, Object i)
說明:平距坡度平移
輸入:x.PanXI(10,0.25)
Object Object.PanY(Object dy)
說明:垂直平移
輸入:x.PanY(10)
Object Object.PanYA(Object dy, Object a)
說明:垂距角度平移
輸入:x.PanYA(10,30)
Object Object.PanYI(Object dy, Object i)
說明:垂距坡度平移
輸入:x.PanYI(10,0.25)
Object Object.Project3d(Object plane)
說明:相對指定平面投影
輸入:x.Project3d(plane3d((0,0,0),vect3d(0,1,0)))
Object Object.Rotate(Object a)
說明:相對原點逆時針旋轉
輸入:x.Rotate(30)
Object Object.Rotate3d(Object axis, Object a)
說明:相對指定軸逆時針旋轉
輸入:x.Rotate3d(axis3d(30),30)
Object Object.Rotate3dX(Object a)
說明:相對X軸逆時針旋轉
輸入:x.Rotate3dX(30)
Object Object.Rotate3dY(Object a)
說明:相對Y軸逆時針旋轉
輸入:x.Rotate3dY(30)
Object Object.Rotate3dZ(Object a)
說明:相對Z軸逆時針旋轉
輸入:x.Rotate3dZ(30)
Object Object.RotateAt(Object o, Object a)
說明:相對點O逆時針旋轉
輸入:x.RotateAt((0,0),30)
Object Object.Scale(Object s)
說明:相對原點等比例縮放
輸入:x.Scale(2)
Object Object.Scale3d(Object s)
說明:相對原點等比例縮放
輸入:x.Scale3d(2)
Object Object.Scale3dAt(Object o, Object s)
說明:相對點O等比例縮放
輸入:x.Scale3dAt((0,0,0),2)
Object Object.ScaleAt(Object o, Object s)
說明:相對點O等比例縮放
輸入:x.ScaleAt((0,0),2)
Object Object.ScaleXY(Object sx, Object sy)
說明:相對原點不等比例縮放,註意線段全部以直代曲
輸入:x.ScaleXY(1,2)
Object Object.ScaleXYAt(Object p, Object sx, Object sy)
說明:相對點O不等比例縮放,註意線段全部以直代曲
輸入:x.ScaleXYAt((0,0),1,2)
Object Object.Set3dX(Object x)
說明:設置X
輸入:x.Set3dX(10)
Object Object.Set3dY(Object y)
說明:設置Y
輸入:x.Set3dY(10)
Object Object.Set3dZ(Object z)
說明:設置Z
輸入:x.Set3dZ(10)
Object Object.SetX(Object x)
說明:設置X
輸入:x.SetX(10)
Object Object.SetY(Object y)
說明:設置Y
輸入:x.SetY(10)
Object Object.Transform(Object ucs)
說明:變換到指定坐標系外
輸入:x.Transform(ucs(30))
Object Object.Transform3d(Object ucs)
說明:變換到指定坐標系外
輸入:x.Transform3d(ucs3d(30))。
最近三個章節按數據類型和成員分類進行介紹不會漏項,但是缺點是初學者看起來比較容易迷糊,內容也顯得枯燥讓人打瞌睡。不過總算結束了,有了這四塊看不起眼的磚頭,後面大家來看看可以砌成什麼樣的大樓。
聲明:原創文章歡迎轉載,但請註明出處,https://www.cnblogs.com/ShoneSharp。
軟體: S#語言編輯解析運行器,運行環境.NET 4.0,綠色軟體,單個EXE直接運行,無副作用。網盤下載鏈接為https://pan.baidu.com/s/1dF4e08p