第4讲 数据类型

74 阅读1分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第39天,点击查看活动详情

第4讲 数据类型

CachéObjectScript是一种无类型语言。不必声明变量的类型。任何变量都可以有字符串、数值或对象值。

字符串

  • 字符串是一组字符:字母、数字、标点符号等,由一组匹配的引号("")分隔。
	s str = "this is a string"
	w str,!
  • 通过在字符串前面加上另一个双引号字符,可以将双引号字符作为文字包含在字符串中,除了双引号字符没有其他转义字符。
	s str = "yaoxin name si ""姚鑫"""
	w str,!
  • 可以使用_连接运算符将两个字符串连接成单个字符串,可以字符串中包含非打印字符。
	s lf = $char(10,13)
	s str = "yao" _ lf _ "xin"
	w str,!
  • 使用等于(=)和不等于('=)运算符来比较两个字符串。字符串相等比较区分大小写。
	w "yao" = "yao",!  
	w "xin" = "Xin",!  
  • 运算符比较字符串和数字时需要注意,因为比较是字符串比较,而不是数字比较。
	w "-8" = ---0008.0000,!    
	w "-008.0" = -8,!
  • 只有包含规范形式的数字的字符串才等于其相应的数字。(“-0”不是规范数字。)
	w "-0" = 0,!        
	w "-0" = -0,!
  • <><=>=运算符不能用于执行字符串比较。这些运算符将字符串视为数字,并始终执行数字比较。使用这些运算符进行比较时,将为任何非数字字符串分配数值0。
	w "yx" > 0,!  
	w "1yx" > 0,!
	w "y1x" > 0,!
  • 字符串中连接$char(0),显示相同,实则不相等。
	s str1 = "姚" _ $char(0) _ "鑫"
	w str1,!
	s str2 = "姚鑫"
	w str2,!
	w str1 = str2,!
  • 默认情况下启用长字符串串,则字符串的最大长度为3,641,144个字符。如果禁用长字符串,则字符串的最大长度为32,767个字符。
    w $SYSTEM.SYS.MaxLocalLength(),!

位串

  • 位串表示具有布尔值的编号位的逻辑集合。字符串中的位从位号1开始编号。任何未显式设置为布尔值1的编号位的计算结果为0
  • 将数字转换为位串,再还原为数字。

ClassMethod BitString()
{
	s number = $random(32)
	w "随机数为:" _ number,!
	
	s bStr = $factor(number)
	zw bStr
	
	s count = $bitcount(bStr)
	w "位串长度:" _ count,!
	
	w "位串显示:"
	for i = 1 : 1 : count {
		w $bit(bStr, i) 
	}
	
	w !
	s decimal = 0
	for i = count : -1 : 1 {
		s bit = $bit(bStr , i)
		if (bit) {
			s decimal = decimal + $zpower(2, i - 1)
		}
	}
	w "还原数字为:" _ decimal,!
}
  • 将字符转为位串,再还原为字符。

ClassMethod CharBitString()
{
	s str = "姚"
	w "字符串为:" _ str,!
	
	s number = $ascii(str)
	
	w "随机数为:" _ number,!
	
	s bStr = $factor(number)
	zw bStr
	
	s count = $bitcount(bStr)
	w "位串长度:" _ count,!
	
	w "位串显示:"
	for i = 1 : 1 : count {
		w $bit(bStr, i) 
	}
	
	w !
	s decimal = 0
	for i = count : -1 : 1 {
		s bit = $bit(bStr , i)
		if (i = 2) {
			s bit = 'bit
		}
		if (bit) {
			s decimal = decimal + $zpower(2, i - 1)
		}
	}
	w "还原数字为:" _ decimal,!
	
	s target = $char(decimal)
	
	w "目标字符串为:" _ target,!
}