我已经设置了Visual Studio Code调试器并运行以下程序。
pub fn main() {
let mut chars = "test".chars();
match chars.next() {
Some(c) => {
println!("What is the value of c, here?");
if c == 'c' {
println!("c");
}
}
None => {}
}
}
Run Code Online (Sandbox Code Playgroud)
如果在第6行设置一个断点,然后在“变量”和“监视”窗格中查找,则c不会求值,而是传递以下消息:identifier 'c' is undefined在Windows上<not available>使用cppvsdbg,在Linux上使用lldb。我已经确认,对于当前稳定的编译器版本,这会在Linux和Windows版本上发生。
我也将以下内容添加到Cargo.toml无济于事:
[profile.dev]
opt-level = 0
debug = true
Run Code Online (Sandbox Code Playgroud)
作为参考,这是VS Code编译器所需的我的launch.json文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/target/debug/test.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [], …Run Code Online (Sandbox Code Playgroud) 我想从文件中读取数据并将其添加到存储在内存中的对象中。文件 text.txt 中的数据大致如下所示:
One: {title: 'One' ,
contributor: 'Fred',
summary: 'blah' ,
comments: 'words' },
Two: {title: 'Two' ,
contributor: 'Chris' ,
summary: 'blah blah i'm a blah' ,
comments: '' },
Run Code Online (Sandbox Code Playgroud)
我试图将其设置为一个空对象,如下所示:
var fs = require('fs');
var text = Object.create(null);
fs.readFile("./public/text.txt", "utf-8", function(error, data) {
text = { data };
});
Run Code Online (Sandbox Code Playgroud)
然而,当我登录text到控制台时,它看起来像这样:
{ data: 'One: {title: \'One\' ,\ncontributor: \'Fred\',\nsummary: \'blah\' ,\ncomments: \'words\' },\n \nTwo: {title: \'Two\' ,\ncontributor: \'Chris\' ,\nsummary: \'blah blah i\'m a blah\' ,\ncomments: \'\' },\n\n' …Run Code Online (Sandbox Code Playgroud) 假设我有两个组件.父对象作为属性传递,然后将其复制到本地数据存储中.它具有更新此本地存储的功能,该存储将传递给子级.这是我的父组件:
const Parent = ({stuff}) => {
const store = {
stuff: Object.assign({}, stuff);
}
const updateStuff = (thing, property) => store.stuff[thing].property = thing;
return <Child stuff={stuff} updateStuff={updateStuff} />
}
Run Code Online (Sandbox Code Playgroud)
子组件具有类似的结构-它使副本stuff,和其变异副本stuff上<input>的onChange.然后它将自己更新的东西副本传递给updateStuff它收到的函数,以便改变父级的道具副本.这是孩子.
const Child = ({stuff, updateStuff}) => {
const stuff = {
thing1: Object.assign({}, stuff.thing1),
thing2: Object.assign({}, stuff.thing2)
}
const setProp = event => {
const update = event.target.value;
stuff.thing1.prop = update;
updateStuff(thing1, stuff.thing1.prop)
}
return (
<div>
<input id="thing1" …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个 Node.js 项目,并且希望自动设置环境变量。我写了一个脚本(set_env.ps1),看起来像这样:
Write-Host "Setting environment variables...";
$env:CLIENT_KEY="xxxxxxxxxxxxxxxx";
$env:CLIENT_SECRET="xxxxxxxxxxxxx";
[etc]
Run Code Online (Sandbox Code Playgroud)
我从一些 npm 脚本中调用它:
"scripts": {
"install:windows": "powershell ./set_env.ps1",
"start": "npm run install:windows && node index",
"monitor": "npm run install:windows && nodemon index"
},
Run Code Online (Sandbox Code Playgroud)
但这似乎不起作用。我可以在命令行中手动输入相同的命令,一次一个,并设置环境变量。不过,只需运行脚本,“Settingenvironmentvariables...”就会打印到 powershell 提示符中,但不会设置任何变量。
互联网上的所有内容似乎都想从提示符中执行此操作,一次一个环境变量。对于一长串环境变量来说,这是极其乏味的,而且 Webstorm 中嵌入的 Powershell 提示符有不接受粘贴字符串的习惯。
根据各种文档和博客,以及这个问题和其他问题,我知道可以使用正则表达式验证路由参数.然而,这让我找了大约一个半小时:
app.get('/api/:url(/^http:\/\/(.+?)\.(.+?)$/)', (req, res) => {
// do stuff with req.params.url
});
Run Code Online (Sandbox Code Playgroud)
每当我在本地运行服务器并输入时localhost://8000/api/http://www.google.com,响应就是Cannot GET /new/http://www.google.com
我知道正则表达式做了我想要它做的事情,因为:
/^http:\/\/(.+?)\.(.+?)$/.test('http://www.google.com');
Run Code Online (Sandbox Code Playgroud)
...返回true.
我也试过改变路线字符串看起来像......
'/api/:url(^http:\/\/(.+?)\.(.+?)$)'
'/api/:url(http:\/\/(.+?)\.(.+?))'
'/api/:url/^http:\/\/(.+?)\.(.+?)$/'
Run Code Online (Sandbox Code Playgroud)
还有其他几种格式看起来像Stack Overflow线程和博客中给出的示例(Express文档绝对没有在第一个路径参数之外使用的正则表达式的示例).也许有一些我不知道的格式限制,或者Express中对RegExp支持的限制?如果文档说什么的话会很棒.
我感谢任何帮助.