我试图为我编写的这个newLISP程序编写使用说明,但它一直抱怨字符串太长。
ERR: string token too long : "$$$$$$$$&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&"我花了大约10分钟咒骂newLISP,想出一些偏执的理论,比如,也许你不应该在字符串中引用,或者当我使用原始字符串({})时,它可能会起作用,直到我开始切断字符串。它达到了消息消失的地步,使帮助消息变得毫无帮助。原来,newLISP不喜欢比2048(2^11)字符更多的字符串。苏,
为什么要限制字符串文字中的字符数?
为什么是2048个字符?
将单元格内存增加到128MB(将其视为手册)不会改变任何事情。现在唯一可行的解决方案是将帮助字符串拆分为两个字符串,每个字符串位于2048字符下,然后将它们与string连接起来。
另一件奇怪的事情是,任何具有2048+字符的字符串都会在repl中以不同的方式打印:
> (dup "&" 2048)
[text]&&&&&&&&&&&&&& .....
......
&&&&&&&&&&&&&&&[/text]
> (dup "&" 2040)
"&&&&&&&&&&&&&&&&&&& .....
.....
&&&&&&&&&&&&&&&"发布于 2013-11-30 17:09:38
有三种方法可以执行字符串:
从手册中:
引号字符串不能超过2,048个字符。较长的字符串应该使用文本和/text标记分隔符。newLISP自动使用这些标记输出超过2,048个字符的字符串。
字符串可以很长:
> (quiet (set 's (dup "&" 10E8))) ; don't bother to show the string :)
> (length s)
1000000000
> (10000 20 s)
"&&&&&&&&&&&&&&&&&&&&"
>您将遇到的唯一问题是,在希望字符串真正结束之前,您需要处理可能包含[/text]标记的字符串中的源代码。看起来你还没到那个地步..。:)
https://stackoverflow.com/questions/20299397
复制相似问题