当前位置:网站首页>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目录中。
边栏推荐
- 0 basic learning C language - interrupt
- pytorch_YOLOX剪枝【附代码】
- China 1,4-cyclohexanedimethanol (CHDM) industry research and investment decision-making report (2022 Edition)
- NetXpert XG2帮您解决“布线安装与维护”难题
- Installation and use of labelimg
- Heavyweight news | softing fg-200 has obtained China 3C explosion-proof certification to provide safety assurance for customers' on-site testing
- 硬件开发笔记(十): 硬件开发基本流程,制作一个USB转RS232的模块(九):创建CH340G/MAX232封装库sop-16并关联原理图元器件
- Lora sync word settings
- AI enterprise multi cloud storage architecture practice | Shenzhen potential technology sharing
- go多样化定时任务通用实现与封装
猜你喜欢
Spatial domain and frequency domain image compression of images
GPS du début à l'abandon (XIII), surveillance autonome de l'intégrité du récepteur (raim)
LeetCode 练习——剑指 Offer 26. 树的子结构
Hardware development notes (10): basic process of hardware development, making a USB to RS232 module (9): create ch340g/max232 package library sop-16 and associate principle primitive devices
第3章:类的加载过程(类的生命周期)详解
手写ABA遇到的坑
Heavyweight news | softing fg-200 has obtained China 3C explosion-proof certification to provide safety assurance for customers' on-site testing
0 basic learning C language - digital tube
基於 QEMUv8 搭建 OP-TEE 開發環境
将MySQL的表数据纯净方式导出
随机推荐
Codeforces Round #274 (Div. 2) –A Expression
将MySQL的表数据纯净方式导出
嵌入式常用计算神器EXCEL,欢迎各位推荐技巧,以保持文档持续更新,为其他人提供便利
qt quick项目offscreen模式下崩溃的问题处理
Adjustable DC power supply based on LM317
Management background --2 Classification list
微信红包封面小程序源码-后台独立版-带测评积分功能源码
3DMax指定面贴图
Heavyweight news | softing fg-200 has obtained China 3C explosion-proof certification to provide safety assurance for customers' on-site testing
GPS from getting started to giving up (XIII), receiver autonomous integrity monitoring (RAIM)
2020 Bioinformatics | GraphDTA: predicting drug target binding affinity with graph neural networks
GPS from entry to abandonment (XIV), ionospheric delay
十二、启动流程
Barcodex (ActiveX print control) v5.3.0.80 free version
Solve project cross domain problems
Classic sql50 questions
GPS从入门到放弃(十一)、差分GPS
2500个常用中文字符 + 130常用中英文字符
网络基础入门理解
Insert sort and Hill sort