小编sin*_*nsv的帖子

python 2.7和3.3子进程模块的区别

我有以下代码

from __future__ import print_function
import subprocess

p = subprocess.Popen(['cat'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.kill()
p.wait()
print(p.stdin.write(b'some'))
Run Code Online (Sandbox Code Playgroud)

我用python 2.7和python 3.3运行它.使用python 2.7,当我尝试写入stdin时会抛出异常.使用python 3.3这段代码打印4. python 2.7子进程模块和python 3.3有什么区别?

python subprocess python-2.7 python-3.x python-3.3

3
推荐指数
1
解决办法
2150
查看次数

将结构体方法设置为回调

我有一些结构,并希望该结构的方法作为回调。我尝试将回调设置为闭包并调用其中的方法,但这不起作用。

这是我想要的示例。在此示例中,我使用Cursive库:

extern crate cursive;

use cursive::Cursive;
use cursive::views::{BoxView, SelectView, IdView};
use cursive::view::Selector;


struct SomeStruct {
    siv: Cursive,
}

impl SomeStruct {
    fn new(siv: Cursive) -> SomeStruct {
        let mut ss = SomeStruct {
            siv: siv
        };
        let mut select: SelectView<i32> = SelectView::new();
        select.set_on_submit(|siv, value| ss.on_submit_callback(siv, value));
        ss.siv.add_fullscreen_layer(BoxView::with_full_screen(IdView::new("select", select)));
        ss
    }

    fn on_submit_callback(&mut self, siv: &mut Cursive, value: &i32) {
        println!("value - {}", value);
    }
}

fn main() {
    let siv = Cursive::new();
    let mut ss = SomeStruct::new(siv); …
Run Code Online (Sandbox Code Playgroud)

closures callback rust

3
推荐指数
1
解决办法
1353
查看次数