Open jeremyjia opened 1 year ago
闭包概念
闭包的用途
闭包的优点
使用闭包模拟面向对象的代码风格 function person(name) { function say(content) { console.log(name + ':' + content) } return say //此处的say函数就是一个闭包,当然也可以写成匿名函数的样子 }
a = person("张三") b = person("李四") a("在干啥?") b("没干啥。") a("出去玩吗?") b("去哪啊?")
============================== 张三:在干啥? 李四:没干啥。 张三:出去玩吗? 李四:去哪啊?
function a() { var i = '初始值'; i = i + "—_执行a" // 此处的函数b访问了父级函数a中的局部变量i,成为了一个闭包 function b() { i = i + "_执行b" console.log(i) } return b; } var c = a(); // 此时 i 的值为 :初始值—_执行a c() // 此时 i 的值为 :初始值—_执行a_执行b c() // 此时 i 的值为 :初始值—_执行a_执行b_执行b
var elements = document.getElementsByTagName('li'); var length = elements.length; for (var i = 0; i < length; i++) { elements[i].onclick = function (num) { return function () { alert(num); }; }(i); }
#控制台诗词填空小程序,挺有技巧的 import random
poetry = [ '天生我{}必有用,千金散尽还复来', '朝辞白帝{},千里{}一日还', '{}日依山尽,黄河入{}流' ]
chosen_poetry_index = random.choice(range(len(poetry))) print( '今天的唐诗是:'+ str(chosen_poetry_index) ) print(poetry[chosen_poetry_index])
while '{}' in poetry[chosen_poetry_index]: print('请填写:') answer = input() #输入诗句涉及的名词来补充唐诗句子
poetry[chosen_poetry_index] = poetry[chosen_poetry_index].replace('{}', answer, 1)
print('最终填写后的唐诗是:') print(poetry[chosen_poetry_index])
6/3/2023 会议记录
Todo:
C++处理数据库存储过程返回多结果集: https://jeffpar.github.io/kbarchive/kb/183/Q183297/
6/10/2023 会议记录
todo:
6/17/2023 会议记录
Todo:
You exceeded your current quota, please check your plan and billing details
curl https://api.openai.com/v1/completions -H "Content-Type: application/json" -H "Authorization: Bearer sk-ye........." -d '{ "model": "text-davinci-003", "prompt": "Say this is a test", "max_tokens": 7, "temperature": 0 }'
{ "error": { "message": "You exceeded your current quota, please check your plan and billing details.", "type": "insufficient_quota", "param": null, "code": null } }
6/24/2023 会议记录
from gtts import gTTS import os
language = 'zh' # 或 zh-tw
output = gTTS(text="这是中文", lang=language, slow=False) output.save(filename)
os.system(f"start {filename}")
6/30/2023 会议记录
TODO
上面的插件调用问题经调查,即使是两个不同的插件在同样的frameRange设置,也没有出现叠加效果, 原因是如下代码引起的,每个插件都设置下面这句话 ctx.clearRect(0, 0, w, h); 这句话在Java的代码中,会清除之前的绘制 public void clearRect(int x, int y, int width, int height) { graphics.clearRect(x, y, width, height); } Graphics2D graphics
7/8/2023 会议记录
7/15/2023 会议记录
Canvas旋转 rotate(angle)说明 这个方法只接受一个参数:旋转的角度(angle),它是顺时针方向的,以弧度为单位的值 旋转的中心始终是canvas的原点,如果要改变它,则需要用到translate()方法,这两个函数配合使用的时候要注意
https://blog.csdn.net/huangpin815/article/details/69487052 rotate函数的角度具有累计叠加效果,这是一个特点
ctx.translate(100, 100); //新的坐标原点 ctx.fillRect(100,100,100,50); //这是针对新的坐标原点的 ctx.rotate(30*Math.PI/180); //设置顺时针30度 ctx.fillRect(100,100,100,50); //此时,该矩形针对新的坐标原点,旋转30度 ctx.translate(-100, -100); //还原坐标原点
以上代码如果多次调用,这两个矩形会一直进行30度的累积旋转
Java实现的垂直文本特效vertical text,可以做成超级对象,效果应该不错 https://kodejava.org/how-do-i-draw-a-vertical-text-in-java-2d/
This appears to be an undocumented little gem that’s mentioned on a few blogs, like [here]
var source = https://translate.google.com/translate_tts?tl=ja-JP&q= ${encodeURIComponent('konnichiwa')}&client=tw-ob
;
var audio = new Audio(source);
audio.play();
7/22/2023 会议记录
TODO: 学习SQL课程 https://www.w3schools.com/sql/default.asp
能否启动libgdx重新开发视频制作程序?(littleflute: 技术角度有意义,市场角度意义不大)
7/29/2023 会议记录 演示超级对象的任意轨迹设计,详见 #538 ,ScriptEngineManager是Java JDK6引入的
针对目前的剧本及插件黄老师提了一些建议:
想到一个比较综合的一点的需求: 根据文案,文案类似几个人的聊天记录,生成动画视频,视频内容是几个人交替的聊天,就像圆桌会议一样,大家交替发言
近期的会议记录及研究成果