小编Tom*_*omo的帖子

为什么JavaScript的eval需要括号来评估JSON数据?

我已经学会了(艰难的)我需要在JSON数据周围添加括号,如下所示:

stuff = eval('(' + data_from_the_wire + ')');
// where data_from_the_wire was, for example {"text": "hello"}
Run Code Online (Sandbox Code Playgroud)

(至少在Firefox 3中).

这背后的原因是什么?我讨厌编写代码而不理解引擎盖后面的内容.

javascript json eval

34
推荐指数
4
解决办法
1万
查看次数

如何将Rust闭包转换为C风格的回调?

我正在尝试为一块C API编写一个Rusty包装器.我挣扎着一个C构造:

typedef bool (*listener_t) (int, int);
bool do_it(int x1, int y1, int x2, int y2, listener_t listener)
Run Code Online (Sandbox Code Playgroud)

除非侦听器返回false,否则该函数对一系列数字起作用.在那种情况下,它会中止计算.我想要一个像这样的Rust包装器:

fn do_with_callback<F>(start: (i32, i32), end: (i32, i32), callback: F)
    where F: Fn(i32, i32) -> bool
Run Code Online (Sandbox Code Playgroud)

rust-bindgen 为我创建了这个,为了清晰起见略微编辑:

pub type listener_t = Option<extern "C" fn(x: c_int, y: c_int) -> c_bool>;

pub fn TCOD_line(xFrom: c_int, yFrom: c_int,
                 xTo: c_int, yTo: c_int,
                 listener: listener_t) -> c_bool;
Run Code Online (Sandbox Code Playgroud)

我应该如何在我的do_with函数中将闭包或特征引用转换为C风格的回调:

pub fn do_with_callback<F>(start: (i32, i32), end: (i32, i32), callback: F) -> Self
    where F: Fn(i32, …
Run Code Online (Sandbox Code Playgroud)

closures ffi rust

19
推荐指数
3
解决办法
4287
查看次数

如何强制eclipse使用指定的界面语言?

我的新工作笔记本电脑有我的本机(波兰语)语言环境集.但是,我根本无法使用除英语之外的任何语言的eclipse.我已经习惯了英文名字,我不懂翻译.

如何强制Eclipse以操作系统使用的其他语言开头?

eclipse configuration

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

如何使用Selenium模拟输入html文本输入?

在Web界面中,我有一个文本字段.当用户输入文本并接受输入时,应用程序执行操作.

我想用Selenium测试行为.不幸的是,用chr(13)调用'keypress'会将字符的表示插入到字段中.

还有其他方式提交表格吗?我想模仿预期的用户互动,没有任何捷径...

user-interface selenium selenium-rc

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

迭代对特征对象的可变引用的向量

我有一个struct包含trait对象的可变引用:

trait Task {
    fn do_it(&mut self);
}

struct Worker<'a> {
    tasks: Vec<&'a mut Task>,
}
Run Code Online (Sandbox Code Playgroud)

在一个方法中Worker,我想迭代任务并调用它们do_it:

impl<'a> Worker<'a> {
    pub fn work(&mut self) {
        for task in self.tasks.iter() {
            self.work_one(*task);
        }
    }

    fn work_one(&self, task: &mut Task) {
        task.do_it();
    }
}
Run Code Online (Sandbox Code Playgroud)

可悲的是,借阅检查员不允许我这样做:

error[E0389]: cannot borrow data mutably in a `&` reference
  --> src/main.rs:12:27
   |
12 |             self.work_one(*task);
   |                           ^^^^^ assignment into an immutable reference
Run Code Online (Sandbox Code Playgroud)

我不能制作Worker泛型,因为我希望它能够保存多种类型的任务.我还需要任务变得可变.我怎么在Rust中做到这一点?

rust borrow-checker

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

将i8添加到i8的惯用方法

请考虑以下代码:

let mut val : u8 = 125;
let deltas : [i8; 4] = [5, -5, 5, 5];

let delta = select_current_delta(deltas);

val += delta;
Run Code Online (Sandbox Code Playgroud)

这看起来很简单.我想根据某些标准增加或减少字节值(我有办法防止u8值溢出).

当然,这不会编译:

 > rustc lala.rs
 lala.rs:7:12: 7:17 error: mismatched types:
  expected `u8`,
     found `i8`
 (expected u8,
     found i8) [E0308]
 lala.rs:7     val += delta;
                      ^~~~~
Run Code Online (Sandbox Code Playgroud)

咄!在Rust中,似乎禁止混合使用有符号和无符号类型.这个怎么样?

val = (val as i8 + delta) as u8;
Run Code Online (Sandbox Code Playgroud)

编译,但当我尝试运行它...

> ./lala
thread '<main>' panicked at 'arithmetic operation overflowed', lala.rs:7
Run Code Online (Sandbox Code Playgroud)

是的,i8最大值是125,加上5将溢出,即使值非常好u8.

我能够提出两种有效的解决方案:

val = …
Run Code Online (Sandbox Code Playgroud)

rust

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

在Django Admin中保留过滤器

我想要达到的目的是:

  • 我去管理站点,将一些过滤器应用到对象列表
  • 我点击并对象编辑,编辑,编辑,点击"保存"
  • 网站将我带到对象列表中......未经过滤.我想记住并应用第1步中的过滤器.

有一个简单的方法吗?

python django django-admin

5
推荐指数
1
解决办法
3294
查看次数