小编Lau*_*nce的帖子

关闭窗口前提示保存/退出

  • 我正在写一个写作申请.用户可以打开应用程序,写一些文本,保存他们的工作等.
  • 我试图这样做,以便点击window close按钮将提示用户(a)保存他们的工作(如果需要)或(b)退出.
  • 我试图用它window.beforeunload来实现这一点,但发现我陷入了一个循环,试图"退出"使得同样的提示无限期地出现.

这是一些代码:

windowCloseCheck() {
window.onbeforeunload = function(e) {
  e.returnValue = false;
// window.alert('try to close me');    
if(file.isUnsaved() || file.hasChanged()) {
  // prompt - save or just quit?
  file.fileWarning('You have unsaveeed work.', 'Save', 'Quit', function(){
    // OPTION A - save
    file.save();
  }, function() {
    // OPTION B: Quit.
    ipcRenderer.send('quitter')
  })
} 

else {
  // file is saved and no new work has been done:
  ipcRenderer.send('quitter')
}
Run Code Online (Sandbox Code Playgroud)

windowCloseCheck在设置应用程序时调用,启动用于关闭窗口的事件侦听器.我的条件是检查文件是否未保存或是否已从原始文件更改.

fileWarning 是一个只包装电子对话框的功能,弹出显示有两个选项和各自的功能来调用每个选项.

如果我(可能)遗漏了必要的信息,那么剩下的代码就可用了.我很乐意澄清我是不是很清楚.

electron

14
推荐指数
3
解决办法
6106
查看次数

启用优化后,生成线程的程序会发生混乱

当我rustc 1.rs用来编译以下代码时,它会按预期无休止地运行.

use std::thread;

fn main() {
    thread::spawn(|| {
        let a = 2;
        loop {
            a*a;
        }
    }).join();
}
Run Code Online (Sandbox Code Playgroud)

更短的版本:

use std::thread;

fn main() {
    thread::spawn(|| {
        loop {}
    }).join();
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我rustc -O 1.rs用来编译上面的两个程序,它们会崩溃:

thread '<unnamed>' panicked at 'called `Result::unwrap()` on an `Err` value: Error { repr: Os { code: 0, message: "Success" } }', src/libcore/result.rs:837
stack backtrace:
1:     0x5650bd0acada - std::sys::imp::backtrace::tracing::imp::write::h917062bce4ff48c3
                        at /build/rustc-1.14.0+dfsg1/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42
2:     0x5650bd0b068f - std::panicking::default_hook::{{closure}}::h0bacac31b5ed1870
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:247
3:     0x5650bd0aee7c - std::panicking::default_hook::h5897799da33ece67
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:263 …
Run Code Online (Sandbox Code Playgroud)

multithreading rust

9
推荐指数
1
解决办法
208
查看次数

是否有可能解构方法的`self`参数?

我试图找到一种方法来解构self方法的论证.根据GitHub评论:

在今天的会议上,我们有一个不同的计划,使自我论证变得可毁坏.使用通用函数调用语法(UFCS#11938),静态方法和实例方法之间不会有任何区别 - 它们都是"关联函数".此时,任何第一个参数的函数都是自我类型,可以使用方法语法调用,并且self,&self并且&mut self只是用于ie的糖self: &Self,并且自我参数的解构可以通过不使用自身糖来正常完成.

我编写了以下代码,但它不能像我预期的那样工作,因为所有三个打印函数都可以用作方法.

struct Vector {
    x: i32,
    y: i32,
    z: i32,
}

impl Vector {
    fn print1(self: &Self) {
        println!("{} {} {}", self.x, self.y, self.z);
    }

    // destructure self argument
    fn print2(&Vector{x, y, z}: &Self) {
        println!("{} {} {}", x, y, z);
    }

    // use another name for the first argument
    fn print3(this: &Self) {
        println!("{} {} {}", this.x, this.y, this.z);
    }
} …
Run Code Online (Sandbox Code Playgroud)

pattern-matching rust

6
推荐指数
1
解决办法
697
查看次数

为什么我没有实现没有实现Ord的f32的"特征冲突实现"?

我想min()对方法f32,u32和i32,所以我创建了一个特点Min:

trait Min {
    fn min(v1: Self, v2: Self) -> Self;
}

impl<T> Min for T where T: Ord {
    fn min(v1: Self, v2: Self) -> Self {
        ::std::cmp::min(v1, v2)
    }
}

impl Min for f32 {
    fn min(v1: Self, v2: Self) -> Self {
        v1.min(v2)
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

error[E0119]: conflicting implementations of trait `Min` for type `f32`:
  --> src/main.rs:11:1
   |
5  | / impl<T> Min for T where T: …
Run Code Online (Sandbox Code Playgroud)

rust

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

π的莱布尼兹公式 - 这有什么用的吗?(蟒蛇)

我正在做一个练习,要求使用莱布尼兹公式来近似pi值的函数.这些是对维基百科的解释:

在此输入图像描述

在此输入图像描述

逻辑思维很容易找到我,但我没有接受过很多关于数学的正规教育,所以我对第二个最左边的符号代表什么感到遗憾.我尝试制作代码pi = ( (-1)**n / (2*n + 1) ) * 4,但是返回1.9999990000005e-06而不是3.14159 ...,所以我使用了累加器模式(因为指南的章节也提到了它们)并且它工作正常.然而,我不禁想到它有点做作,而且可能有更好的方法,因为Python专注于简单性并使程序尽可能短.这是完整的代码:

def myPi(n):
    denominator = 1
    addto = 1

    for i in range(n):
        denominator = denominator + 2
        addto = addto - (1/denominator)
        denominator = denominator + 2
        addto = addto + (1/denominator)

    pi = addto * 4

    return(pi)

print(myPi(1000000))
Run Code Online (Sandbox Code Playgroud)

有谁知道更好的功能?

python python-3.x

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

在第一次出现的分隔符上拆分字符串/变量 (UNIX)

我想用分隔符分割字符串。变量 my_string 包含 Hello_This_Is_My_string 输出将仅

下面是我的代码:

result = $(echo $my_string |" cut -d '_' -f2")
Run Code Online (Sandbox Code Playgroud)

但是,我得到<Is>而不是<This_Is_My_string>

unix scripting ksh

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

连接到 redis-cli 时连接被拒绝

连接 redis-cli 时出现此错误。请帮我解决这个问题。

tony@kali:~$ redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> 
Run Code Online (Sandbox Code Playgroud)

redis

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