代码是这样的:
int a = 1;
auto f = [a] {return a;};
a = 100;
std::cout << f() << endl;
return 0;
Run Code Online (Sandbox Code Playgroud)
我希望看到100
结果.然而,a
就像在被捕时被冻结一样f
.结果是1
.变化a
时有没有办法保持一致a
?
例如,我在Python中有一个字典,如下所示:
{"a_summary" :
{"data1":{"length":100, "quality":10},
"data2":{"length":90, "quality":9}},
"b_summary" :
{"data1":{"comments":19, "views":100},
"data2":{"comments":9, "views":4}}}
Run Code Online (Sandbox Code Playgroud)
然后我想把它转换成这样的conf文件:
[a_summary]
data1_length=100
data1_quality=10
data2_length=90
data2_quality=9
[b_summary]
data1_comments=19
data1_views=100
data2_comments=9
data2_views=4
Run Code Online (Sandbox Code Playgroud)
虽然它看起来有点奇怪data1_
或data2_
需要代表嵌套,但现在似乎还可以.
但后来我需要将此conf文件发送给另一个用户,他需要从此conf文件中恢复原始字典.似乎用户必须再写几个代码来恢复dict.但是,这个解决方案看起来很脏.
我想知道是否有一种Pythonic方式让我将dict保存到conf文件中(如果conf文件不合适,其他可读格式的纯文本也可以接受),然后从该纯文本文件恢复dict.
我find
在 Mac OS X 10.9 中使用该命令,我尝试过这样的命令:
$ touch "a gre a"
$ find -E . -iregex ".*\bgre\b.*"
Run Code Online (Sandbox Code Playgroud)
看起来find
不会返回这个名为a gre a
.. 的文件。有没有人对此有想法?谢谢!
示例如下所示:
a=[1,2,3,4,5];
svg.selectAll("rect").data(a)
a[1]=10;
a[4]=50;
svg.selectAll("rect").data(a)
Run Code Online (Sandbox Code Playgroud)
第二个和第五个元素a
被改变了.我想只选择这两个元素并将其颜色设置为红色.但是,我不知道该怎么做,换句话说,在d3.js中选择这些更改的元素.(据我所知,enter()
不能做这个工作).有没有人有这个想法?
据我所知,UNIX函数read()
将导致中断(TRAP)并调用系统调用read
.我还记得在调用系统调用之前它必须切换到"内核模式" read
并且切换很昂贵.
我想知道为什么必须将read
操作委托给"内核模式"中的系统调用,而不是完全在"用户模式"中完成.
例如,如果在"用户模式"中可以存在管理文件访问权限的服务,则read
操作可以只请求此服务,而不是干扰内核.
对于磁盘驱动程序,在此链接中说
设备驱动程序可以在用户或内核模式下运行
有没有人有这个想法?为什么 read
必须处于内核模式?
我发现val a = -1
在scala REPL中工作得很好,但是如果我跳过=
类似的空间val a=-1
,表达式不会返回结果.
有没有人有这个想法?为什么=
这里需要空间呢?
例如,我想将函数分配println
给变量k
scala> val k = println _
k: () => Unit = <function0>
Run Code Online (Sandbox Code Playgroud)
我希望k的类型是,(Any) => Unit
但它的实际类型是() => Unit
.当我k
使用argumnent 调用时,它有一个错误:
scala> k(3)
<console>:9: error: too many arguments for method apply: ()Unit in trait Function0
k(3)
^
Run Code Online (Sandbox Code Playgroud)
但是,printlin
使用该参数调用效果很好:
scala> println(3)
3
Run Code Online (Sandbox Code Playgroud)
有没有人有关于将函数对象分配给println
变量的想法?
我的Scala代码看起来像这样
if (true) {
val a = 1
}
else {
val a = 2
}
print(a)
print(a+100)
Run Code Online (Sandbox Code Playgroud)
的print(a)
,因为会引发错误a
超出范围评估该行当..然后,我怎样可以定义一个val
根据条件表达式?有没有人有这个想法?
我的代码如下所示:
1::2::Nil match {
case 1::ts::Nil => "Starts with 1. More than one element"
case 1::Nil => "Starts with 1. Only one element"
}
Run Code Online (Sandbox Code Playgroud)
我试图用来1::ts::Nil
匹配以#开头1
且长度大于1 的List .它适用于2元素列表,但是,这种模式不起作用3-element list
,例如:
1::2::3::Nil match {
case 1::ts::Nil => "Starts with 1. More than one element"
case 1::Nil => "Starts with 1. Only one element"
}
Run Code Online (Sandbox Code Playgroud)
这不会有用.有人对此有想法吗?
这是一个多线程的HelloWorld:
public class HelloWorld {
public static void main(String[] args) throws InterruptedException {
Thread myThread = new Thread() {
public void run() {
System.out.println("Hello World from new thread");
}
};
myThread.start();
Thread.yield();
System.out.println("Hello from main thread");
myThread.join();
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,之后myThread.start()
会有两个线程在运行.一个是主线程,另一个是新创建的myThread
.然后,在哪个线程中引用Thread.yield()
?
我查了一下Java SE6 Doc
Thread.yield():使当前正在执行的线程对象暂时暂停并允许其他线程执行
但在代码中,我无法清楚地看到currently excuting thread
它是什么,它看起来两个线程同时运行.
是不是更清楚地说myThread.yield()
而不是Thread.yield()
?有没有人有这个想法?