在我的Windows 7系统上使用GVim,如果我在光标位于URL上时按gx,它会在Firefox中启动URL(我在Windows上的默认浏览器).
但是,当我在Debian 8.3 Linux系统上的XFCE4桌面上执行相同操作时,按gx什么都不做.
我在两个系统上都使用GVim(Vim 7.4).
该:let g:netrw_browsex_viewer命令E121: Undefined variable: g:netrw_browsex_viewer在两个系统上都返回.
我尝试:let g:netrw_browsex_viewer= "xdg-open"在Linux系统上输入命令,但它根本没用.
我有两个问题:
gx命令适用于Windows系统上的URL,而不适用于Debian Linux系统上的XFCE4桌面,尽管g:netrw_browsex_viewer两者都未定义?gx在Debian Linux系统上使命令适用于XFCE4桌面上的URL?这是我的计划.
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello\n");
system("uname");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是输出.
$ gcc foo.c
$ ./a.out
Hello
Linux
Run Code Online (Sandbox Code Playgroud)
但是,如果我将程序的输出重定向到文件,我会看到输出的顺序是相反的,即Linux之前打印的顺序Hello.
$ ./a.out > out.txt
$ cat out.txt
Linux
Hello
Run Code Online (Sandbox Code Playgroud)
为什么涉及重定向时输出的顺序不同?
请参阅此代码。
package main
import (
"fmt"
)
func main() {
var arr [4]string = [4]string{"foo", "bar", "baz", "qux"}
for a, b := range arr {
fmt.Println(a, b)
}
// How can I fix this code?
/*
for x int, y string = range arr {
fmt.Println(a, b)
}
*/
}
Run Code Online (Sandbox Code Playgroud)
第一个 for 循环使用:=运算符自动推导出aand的类型b。但是如果我想明确指定循环变量的类型呢?我尝试这样做是在注释代码的第二个块中,这当然因以下错误而失败。
# command-line-arguments
./foo.go:15: syntax error: unexpected name, expecting {
./foo.go:18: syntax error: unexpected }
Run Code Online (Sandbox Code Playgroud)
你能不能帮我解决的第二个代码块,这样我可以指定类型的x和y明确?
如何处理Go接口中的重复方法?
package main
import (
"fmt"
)
type Person interface {
Hello()
}
type Joker interface {
Person
Joke()
}
type Jumper interface {
Person
Jump()
}
type Entertainer interface {
Joker
Jumper
}
func main() {
fmt.Println("hello, world")
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,则会出现以下错误.
$ go run foo.go
# command-line-arguments
./foo.go:24: duplicate method Hello
Run Code Online (Sandbox Code Playgroud)
如何处理这样的情况,我们如何在这种情况下避免重复的方法?
这是我的 Makefile。
MYPATH = /dir 1/file 1.txt
test1:
echo $(notdir $(MYPATH))
test2:
echo $(notdir "$(MYPATH)")
test3:
echo TODO
Run Code Online (Sandbox Code Playgroud)
我的目的是仅获取file 1.txt来自 的路径的一部分
/dir 1/file 1.txt。是的,这是一条有空格的路径。
我无法得到想要的结果。
$ make test1
echo dir file 1.txt
dir file 1.txt
Run Code Online (Sandbox Code Playgroud)
在上面的输出中,似乎notdir提供了三个单独的参数:/dir、1/file和1.txt,因此notdir
返回了它们的部分:dir、file和1.txt。
以下根本不起作用。
$ make test2
echo dir file 1.txt"
/bin/sh: 1: Syntax error: Unterminated quoted string
Makefile:7: recipe for target 'test2' failed
make: *** [test2] Error …Run Code Online (Sandbox Code Playgroud) 这是我的代码,用于遍历冒号分隔的值并对每个值执行某些操作。
f()
{
IFS=:
for arg in $1
do
echo arg: $arg
done
}
f foo:bar:baz
Run Code Online (Sandbox Code Playgroud)
这在大多数符合 POSIX 的 shell 中都可以正常工作。
$ dash foo.sh
arg: foo
arg: bar
arg: baz
$ bash foo.sh
arg: foo
arg: bar
arg: baz
$ ksh foo.sh
arg: foo
arg: bar
arg: baz
$ posh foo.sh
arg: foo
arg: bar
arg: baz
$ yash foo.sh
arg: foo
arg: bar
arg: baz
Run Code Online (Sandbox Code Playgroud)
但它在 zsh 中没有按预期工作。
$ zsh foo.sh
arg: foo:bar:baz
Run Code Online (Sandbox Code Playgroud)
zsh这里是否违反了POSIX?
我正在尝试各种std::vector即时创建并将其传递给另一个函数的方法:
#include <iostream>
#include <vector>
void print(std::vector<int> a)
{
std::cout << a.size() << '\n';
}
int main()
{
print({1, 2, 3, 4, 5});
print(std::vector<int>{1, 2, 3, 4, 5});
print(std::vector<int>({1, 2, 3, 4, 5}));
}
Run Code Online (Sandbox Code Playgroud)
这会产生所需的输出:
$ clang++ -std=c++11 foo.cpp && ./a.out
5
5
5
Run Code Online (Sandbox Code Playgroud)
我想知道这三个调用之间有什么区别:
print({1, 2, 3, 4, 5});
print(std::vector<int>{1, 2, 3, 4, 5});
print(std::vector<int>({1, 2, 3, 4, 5}));
Run Code Online (Sandbox Code Playgroud)
这是另一个例子:
#include <iostream>
#include <vector>
int main()
{
std::vector<int> a = {1, 2, 3, 4, 5};
// std::cout …Run Code Online (Sandbox Code Playgroud) pre {
background: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<pre>
<code>
foo
</code>
</pre>Run Code Online (Sandbox Code Playgroud)
上方和下方出现空白行foo。这是预期的,因为 PRE 元素中有换行符。
pre {
background: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<pre><code>
foo
</code></pre>Run Code Online (Sandbox Code Playgroud)
上方出现空白行foo,但下方不出现。为什么?
pre {
background: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<pre><code>foo</code></pre>Run Code Online (Sandbox Code Playgroud)
前后不再有空行,foo因为 HTML 代码中没有换行符。
pre {
background: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<pre>
<code>foo</code>
</pre>Run Code Online (Sandbox Code Playgroud)
<pre>之后和之前都有换行符</pre>。foo所以我期待输出中前后有空行。为什么这个例子中没有空行?
我无法使用 JSDOM(版本 13.0.0)从具有相对路径的本地文件系统加载脚本。
我查看了以下问题,但它们没有回答我的问题:
runScripts和resources建议那里)。文件foo.js:
var jsdom = require('jsdom')
var html = `<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script src="bar.js"></script>
</head>
<body>
<div>Test</div>
</body>
</html>`
global.window = new jsdom.JSDOM(html, { runScripts: "dangerously", resources: "usable" }).window
console.log('foo')
Run Code Online (Sandbox Code Playgroud)
文件bar.js:
console.log('bar')
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
$ node foo.js
foo
Error: Could not load script: "bar.js"
at onErrorWrapped (/Users/lone/so/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js:41:19)
at Object.check (/Users/lone/so/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js:72:23)
at request.then.catch.err (/Users/lone/so/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js:124:14)
at process._tickCallback (internal/process/next_tick.js:68:7)
at Function.Module.runMain (internal/modules/cjs/loader.js:746:11)
at startup (internal/bootstrap/node.js:240:19)
at bootstrapNodeJSCore (internal/bootstrap/node.js:564:3) Error: …Run Code Online (Sandbox Code Playgroud) 我正在运行 Node.js v10.5.0 的这些示例。当我只用它打印字符串时,它打印的字符串不带引号。
> console.log('foo', 'bar')
foo bar
undefined
Run Code Online (Sandbox Code Playgroud)
但是当我一起打印字符串和数字时,它会打印带有引号的字符串。
> console.log(1, 'foo', 'bar')
1 'foo' 'bar'
undefined
Run Code Online (Sandbox Code Playgroud)
为什么会出现这种差异呢?我期望它在第二个示例中打印以下内容:
1 foo bar
Run Code Online (Sandbox Code Playgroud)
在 Chrome 70 中也可以观察到类似的行为。
当存在数字类型的参数时,看起来像是console.log()选择在引号中显示字符串,但是即使涉及数字,这些示例也会打印不带引号的所有字符串:
> console.log('foo', 'bar', 1)
foo bar 1
undefined
> console.log('foo', 1, 'bar')
foo 1 bar
undefined
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?为什么console.log()在某些情况下打印带引号的字符串,而在其他情况下则不打印?