小编Han*_*Sun的帖子

如何在C++中使用lambda作为词法范围

代码是这样的:

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

c++ lambda functional-programming function lexical-scope

2
推荐指数
1
解决办法
527
查看次数

将dict转换为配置文件,然后从config恢复dict

例如,我在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.

python configuration text dictionary

2
推荐指数
2
解决办法
1793
查看次数

为什么“\b”在查找的正则表达式模式中不起作用?

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.. 的文件。有没有人对此有想法?谢谢!

regex unix macos find

2
推荐指数
1
解决办法
268
查看次数

选择/检测d3.js中更改的元素?

示例如下所示:

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()不能做这个工作).有没有人有这个想法?

javascript d3.js

2
推荐指数
2
解决办法
1139
查看次数

为什么"读取"必须是在"内核模式"下运行的系统调用?

据我所知,UNIX函数read()将导致中断(TRAP)并调用系统调用read.我还记得在调用系统调用之前它必须切换到"内核模式" read并且切换很昂贵.

我想知道为什么必须将read操作委托给"内核模式"中的系统调用,而不是完全在"用户模式"中完成.

例如,如果在"用户模式"中可以存在管理文件访问权限的服务,则read操作可以只请求此服务,而不是干扰内核.

对于磁盘驱动程序,在此链接中

设备驱动程序可以在用户或内核模式下运行

有没有人有这个想法?为什么 read必须处于内核模式?

c unix linux operating-system file

2
推荐指数
1
解决办法
1710
查看次数

为什么"val a = -1"在scala中不起作用?

我发现val a = -1在scala REPL中工作得很好,但是如果我跳过=类似的空间val a=-1,表达式不会返回结果.

有没有人有这个想法?为什么=这里需要空间呢?

scala

2
推荐指数
1
解决办法
115
查看次数

Scala中的println _:为什么type()=> Unit而不是(Any)=> Unit?

例如,我想将函数分配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 function

2
推荐指数
1
解决办法
700
查看次数

在Scala中,如何在`if块'中定义`val`?

我的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根据条件表达式?有没有人有这个想法?

functional-programming scala

2
推荐指数
1
解决办法
103
查看次数

在scala中,如何使用模式匹配来匹配具有指定长度的列表?

我的代码如下所示:

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)

这不会有用.有人对此有想法吗?

functional-programming scala list pattern-matching

2
推荐指数
1
解决办法
9640
查看次数

受Thread.yield()影响的线程?

这是一个多线程的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()?有没有人有这个想法?

java concurrency multithreading

2
推荐指数
1
解决办法
103
查看次数