当前位置:网站首页>Aardio - 通过变量名将变量值整合到一串文本中
Aardio - 通过变量名将变量值整合到一串文本中
2022-07-06 14:39:00 【卢光庆】
一:引言
假设已经声明好许多变量,如下:
// 各种变量(常量)
console.name = "张三" //成员变量
::age = 18 //全局变量
..sex = "男" //全局变量
var score = 90 //局部变量
var t = { //数组
结果 = "优秀";
评语 = "很好,nice,继续努力!";
}
_OK = "惊不惊喜?" //全局常量如果我们要将他整合到一串文本中,比如sql语句之类的,通常做法是:
var s = ..string.format('姓名:%s\n年龄:%s\n性别:%s\n成绩:%s\n结果:%s\n备注:%s'
,console.name,age,sex,score,..table.tostring(t),_OK);执行结果:

或:
var s = ..string.format(
`姓名:%s
年龄:%s
性别:%s
成绩:%s
结果:%s
备注:%s`,
console.name,age,sex,score,..table.tostring(t),_OK);执行结果:

二、基本解决方案:
貌似这样已经非常方便了。
但是python有个更加方便,最重要的是,非常直观的格式化字符串的方法:f
f-string
一种格式化字符串的方法,使用以
f开头的字符串,称之为f-string,它和普通字符串不同之处在于,字符串如果包含{xxx},就会以对应的变量替换:>>> r = 2.5 >>> s = 3.14 * r ** 2 >>> print(f'The area of a circle with radius {r} is {s:.2f}') The area of a circle with radius 2.5 is 19.62上述代码中,
{r}被变量r的值替换,{s:.2f}被变量s的值替换,并且:后面的.2f指定了格式化参数(即保留两位小数),因此,{s:.2f}的替换结果是19.62。
将变量名称放在它应该在的最合适的位置, 让易读性变得非常强。
那么,用aardio可以模仿这种语法么?
《 aardio调试库解决局部变量的有趣问题(一)_aardio笔记的博客-CSDN博客_aardio》
一文启发(在此表示感谢),我们模仿f-string,造一个 f() 函数,实现这个功能,来看看下面这个语句:
重点来了:

是不是非常接近了!!
自己构造一个语句试试:
var s = f('姓名:{console.name}\n年龄:{age}\n性别:{sex}\n成绩:{score}\n结果:{t}\n备注:{_OK}')想想执行结果是啥?看看:

或:
var s = f(
`姓名:{console.name}
年龄:{age}
性别:{sex}
成绩:{score}
结果:{t}
备注:{_OK}`)执行结果:

三、更多用法:
是不是看着很舒服?变量名称所在的位置,一目了然,阅读起来非常舒服。
再看更多详细用法:
1、格式化文本:
import console;
var t = "ABCD"
var num = 456
var num2 = 12345678
var s="({t:10s})({num:10.2f})({num2:X})"
import godking
console.dump(f(s))
console.pause(true);执行结果:

2、排除函数层次:
import console;
var t = "ABCD"
var num = 456
var num2 = 12345678
var s="({t:10s})({num:10.2f})({num2:X})"
import godking
var test = function(){
var t = "EFGH" // 优先找最近层次的变量值,找到 "EFGH" 而不是 "ABCD"
var num = 890 // 优先找最近层次的变量值,找到 890 而不是 456
console.dump("包含本层函数内变量:",f(s)); //不排除任何函数层,包含本层变量。
console.dump("不包含本层函数内变量:",f(s,,1)); //排除本层函数(test函数,1层)变量。
console.dump("排除2层函数内变量:",f(s,,2)); //排除自本层往上2层函数变量。
// 排除2层的意思是:不但不包括本层函数(test函数,1层)变量,
// 也不包括上层函数(2层)变量,这已经是最顶层了,
// 所以,都排除了,结果就是没找到变量的值。
}
test();
console.pause(true);执行结果:

3、不包括全局变量:
import console;
t = "ABCD";
::num = 1111;
..num2 = 456
var 局部变量 = "我是局部变量"
var s="({t:10s})({num:10.2f})({num2:X})({局部变量})"
import godking
console.dump("包含全局变量:",f(s));
console.dump("不包含全局变量:",f(s,false));
console.pause(true);
执行结果:

4、高级玩法:
import console;
import godking
// 如果 f 函数在“包含全局”设置(默认)下,
// 指定变量既不是局部变量,也不是全局变量,
// 则执行eval操作,将eval结果作为变量值返回。
var s="({3+6*8})({console.color.red})({..math.pi})"
console.dump(f(s));
console.pause(true);执行结果:

5、一个无聊的测试:
import console;
var s="({s})"
import godking
for(i=1;5;1){
s = f(s)
}
console.dump(s)
console.pause(true);
执行结果:

四、库下载地址:
f() 函数代码封装于光庆扩展函数库中,请此处下载:
aardio资源下载 _.rar ,解压缩后放到\lib\godking目录中。
边栏推荐
- How does the uni admin basic framework close the creation of super administrator entries?
- ResNet-RS:谷歌领衔调优ResNet,性能全面超越EfficientNet系列 | 2021 arxiv
- 嵌入式常用计算神器EXCEL,欢迎各位推荐技巧,以保持文档持续更新,为其他人提供便利
- Notes de développement du matériel (10): flux de base du développement du matériel, fabrication d'un module USB à RS232 (9): création de la Bibliothèque d'emballage ch340g / max232 SOP - 16 et Associa
- 2500个常用中文字符 + 130常用中英文字符
- GPS from getting started to giving up (XV), DCB differential code deviation
- Oracle-控制文件及日志文件的管理
- Powerful domestic API management tool
- 墨西哥一架飞往美国的客机起飞后遭雷击 随后安全返航
- 12、 Start process
猜你喜欢
![[MySQL] online DDL details](/img/7e/97098d7ed5802c446bbadaf7035981.png)
[MySQL] online DDL details

Attack and defense world ditf Misc

每日一题:力扣:225:用队列实现栈

HDR image reconstruction from a single exposure using deep CNN reading notes

剪映+json解析将视频中的声音转换成文本
![[线性代数] 1.3 n阶行列式](/img/6e/54f3a994fc4c2c10c1036bee6715e8.gif)
[线性代数] 1.3 n阶行列式

Crawler obtains real estate data
Learn the principle of database kernel from Oracle log parsing

C # réalise la liaison des données du rapport Crystal et l'impression du Code à barres 4

Spatial domain and frequency domain image compression of images
随机推荐
qt quick项目offscreen模式下崩溃的问题处理
Oracle-控制文件及日志文件的管理
NetXpert XG2帮您解决“布线安装与维护”难题
Unity3d minigame-unity-webgl-transform插件转换微信小游戏报错To use dlopen, you need to use Emscripten‘s...问题
PVL EDI 项目案例
中国VOCs催化剂行业研究与投资战略报告(2022版)
AI 企业多云存储架构实践 | 深势科技分享
2500 common Chinese characters + 130 common Chinese and English characters
2022-07-04 mysql的高性能数据库引擎stonedb在centos7.9编译及运行
Problems in the process of opencv300 cmake generating project
2022-07-05 使用tpcc对stonedb进行子查询测试
VIP case introduction and in-depth analysis of brokerage XX system node exceptions
Insert sort and Hill sort
Seata聚合 AT、TCC、SAGA 、 XA事务模式打造一站式的分布式事务解决方案
Force deduction question 500, keyboard line, JS implementation
【10点公开课】:视频质量评价基础与实践
Force buckle 575 Divide candy
Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
2022-07-05 stonedb的子查询处理解析耗时分析
基于 QEMUv8 搭建 OP-TEE 开发环境