关于aardio里面字符串的引用方法,因为相同的字符串,用不同的包括符号,导致最终生成的的字符串不一样,所以容易产生 “代码执行结果不正确” 这样一种假象,而实际上则是因为字符串已经发生变化,跟自己想要的不同了。
这里以 “换行”+“a\nb”+“换行”+“c”+“换行” 为例简单演示一下,用不同的包括符号,产生的字符串有什么区别:
import console;
//单引号,支持转义,不支持换行,换行必须用\n进行转义
s1=
'
a\nb
c
'
//多行注释符,不支持转义,支持中间换行,忽略紧跟着注释符的换行,换行用\r\n表示
s2 =
/*
a\nb
c
*/
//双引号,不支持转义,支持换行,换行用\n表示
s3=
"
a\nb
c
"
//反单引号,不支持转义,支持换行,换行用\n表示
s4=
`
a\nb
c
`
//单行注释符,不支持转义,不支持换行
s5 = //a\nb
console.dump("字符串原文:",s1,"字符串长度",#s1,"十六进制:",..string.hex(s1))
console.dump("字符串原文:",s2,"字符串长度",#s2,"十六进制:",..string.hex(s2))
console.dump("字符串原文:",s3,"字符串长度",#s3,"十六进制:",..string.hex(s3))
console.dump("字符串原文:",s4,"字符串长度",#s4,"十六进制:",..string.hex(s4))
console.dump("字符串原文:",s5,"字符串长度",#s5,"十六进制:",..string.hex(s5))
console.pause(true);
列表对比一下:
字符串表示方法 | 包括符号 | 支持转义符 | 支持换行符 | 字符串结果 ●表示\n ●●表示\r\n | 字符串长度 | 十六进制 |
' a\nb c ' | 单引号 | √ | × | a●bc | 4 | \x61\x0A\x62\x63 |
/* a\nb c */ | 多行注释符 | × | √ | a\nb●●c | 7 | \x61\x5C\x6E\x62\x0D\x0A\x63 |
" a\nb c " | 双引号 | × | √ | ●a\nb●c● | 8 | \x0A\x61\x5C\x6E\x62\x0A\x63\x0A |
` a\nb c ` | 反单引号 | × | √ | ●a\nb●c● | 8 | \x0A\x61\x5C\x6E\x62\x0A\x63\x0A |
//a\nb | 单行注释符 | × | √ | a\nb | 4 | \x61\x5C\x6E\x62 |
其中,多行注释的:
s2 =
/*
a\nb
c
*/
因为忽略紧跟着注释符的换行(前后各一个),所以结果相当于:
s2 =
/*a\nb
c*/