首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数值参数转换为MetaPost宏中的文本

如何将数值参数转换为MetaPost宏中的文本
EN

Stack Overflow用户
提问于 2020-11-28 21:27:09
回答 1查看 92关注 0票数 0

我试图在MetaPost宏中连接一些字符串,其中一些字符串来自数值参数。但是,我收到一条错误消息“额外的令牌将被刷新”。

问题的实质在于下面的片段:

代码语言:javascript
复制
    def foo(expr a) =
      show a; % this prints 1
      show str a; % this prints "" and crashes
    enddef;
    
    show str 1; % this prints "1"
    foo(1);

用str将数字更改为字符串在宏之外工作,但在宏中不起作用。为什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-08 17:36:13

‘`str’返回后缀的字符串表示形式,而不是数字值。1是后缀。

  • str 1是有效的("1"),因为1是一个suffix.
  • str -1,因为没有后缀-1

是无效的。

但是等待…[1][-1]都是后缀,str[1]呈现"1" (是的,没有[]),str[-1][-1]

将整数或浮点数转换为字符串的正确函数是decimal

decimal重新实现str是可能的,只是为了好玩:

代码语言:javascript
复制
% Integer to string without decimal
vardef funny_decimal(expr num) = 
   save s; string s; s=str[num]; % [] needed to evaluate num
   if substring(0,1) of s = "[":
      substring (1,length(s)-1) of s
   else:
      s
   fi
enddef;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65054626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档