第一个 BUG,昨天群友的 PR 合并之后,Github Action 编译失败了。
我以为是优化脚本导致的原因,把脚本回滚了,还是失败。
这就莫名其妙了,之前都是好好的。
有没有群友帮忙调试一下,看看哪里出的问题。
第二个 BUG 就比较有意思了。
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
if __name__ == "__main__":
name = "smallImage"
capitalized_name = "SmallImage"
if True:
events = f"const [{name}FileList, set{capitalized_name}FileList] = useState([]);\n",
else:
events = ""
print(f"{type(events)}: {events}")
很简单吧,大家认为输出什么呢?
赋值是拷贝过来的,人家的代码跑得好好的,也没多想。
结果到了我这儿死活不对头,研究了半天。
最后跟人说你的代码有 BUG,然后人家研究了半天找出了问题。
不过 AI 却一下子找到了问题所在。
解释工作交给 AI 吧。
这段代码的输出是:
<class 'tuple'>: ('const [smallImageFileList, setSmallImageFileList] = useState([]);\n',)
events
的定义:
if
语句中,events
被赋值为一个包含单个字符串的元组,而不是一个字符串。,
** 是创建元组的标志,即:
events = "const [smallImageFileList, setSmallImageFileList] = useState([]);\n",
由于结尾有逗号,这行代码实际上创建了一个元组,即使只有一个元素。type(events)
:
type(events)
会返回 tuple
,因为 events
被定义为一个单元素元组。元组的显示:
('元素内容',)
('const [smallImageFileList, setSmallImageFileList] = useState([]);\n',)
如果你希望 events
是一个字符串而不是元组,可以去掉逗号:
if True:
events = f"const [{name}FileList, set{capitalized_name}FileList] = useState([]);\n"
else:
events = ""
这样输出结果会是:
<class 'str'>: const [smallImageFileList, setSmallImageFileList] = useState([]);