标签: control-flow

通过记录函数调用和参数实时进行javascript调试

是否有调试系统允许我记录javascript函数调用及其参数?这将允许我在实时/客户端情况下跟踪和调试应用程序,而不会因手动记录而导致性能下降.

编辑:我不是在谈论使用"控制台"窗口手动调用函数并查看结果,或者手动将"trace"或"log"命令添加到我的javascript中.我需要它来处理任何正在运行的JavaScript.

javascript debugging logging trace control-flow

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

在斯威夫特,什么是"进步"?

根据Swift语言指南中控制流部分,

所述for-in循环执行一组用于在一个范围,序列,集合,或进展的每个项目的语句.

我很确定我知道其中有三个是:

  1. 范围:使用范围运算符定义的内容,.....<
  2. 顺序:符合SequenceType协议的东西(文档不是很明显,但各种人都对它进行了逆向工程)
  3. 集合:Swift 集合类型中的任何一种,即ArrayDictionary

(我注意到#3可能是多余的,ArrayDictionary似乎都符合SequenceType.)

但是什么是"进展"?这是第四件事,还是作家只是罗嗦?


ETA:我也看到了一个CollectionType协议,所以解释了#3.

iteration control-flow swift

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

Intellij Idea提示:条件总是错误的 - 这可能是真的吗?(JAVA)

我有以下代码:

public String testExitPoints() {
    boolean myBoolean = false;
    try {
        if (getBoolean()) {
            return "exit 1";
        }
        if (getBoolean()) {
            throw new RuntimeException();
        }
    } finally {
        myBoolean = true;
    }
    if (getBoolean()) {
        return "exit 2";
    }
    return "exit 3";
}

public static boolean getBoolean() {
    Random rand = new Random();
    return rand.nextInt() > 100;
}
Run Code Online (Sandbox Code Playgroud)

现在IntelliJ的想法给了我getBoolean()以下提示的第二次和第三次调用:

Condition 'getBoolean()' is always 'false'
Run Code Online (Sandbox Code Playgroud)

现在据我所知,这不是真的,因为getBoolean()可以是true或者false,取决于生成的随机值.我在这里遗漏了什么,或者是IntelliJ Idea中的错误?

java intellij-idea control-flow

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

从抽象语法树获取控制流图

我有一个源自ANTLR Parser Generator for Java的AST.我想要做的是以某种方式构建源代码的控制流图,其中每个语句或表达式是唯一的节点.我知道必须有一些这种识别的递归,我想知道你会建议什么是最好的选择,如果ANTLR有一个工具集我可以用于这项工作.干杯,克里斯


编辑 - 我主要关心的是从AST获得控制流图(CFG).这样我就可以获得源代码的树形表示.为了澄清,源代码和实现语言都是Java.

java parsing abstract-syntax-tree control-flow

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

如何在案例中"突破"......在Ruby中

所以,我试过了break,next而且return.它们都会出错,exit当然有效,但完全退出.那么,一个人怎么会case...when"太快"?

例:

case x
    when y; begin
        <code here>
        < ** terminate somehow ** > if something
        <more code>
    end
end
Run Code Online (Sandbox Code Playgroud)

(上面是某种形式的伪代码,只是为了给出我所要求的一般概念[开始...结束时使用了希望break可行].

而且,虽然我在这里,是否有更优雅的方式传递块case...when

ruby switch-statement control-flow

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

令人信服Swift,由于抛出异常,函数永远不会返回

因为Swift没有抽象方法,所以我创建了一个方法,其默认实现无条件地引发错误.这会强制任何子类重写抽象方法.我的代码看起来像这样:

class SuperClass {
    func shouldBeOverridden() -> ReturnType {
        let exception = NSException(
            name: "Not implemented!",
            reason: "A concrete subclass did not provide its own implementation of shouldBeOverridden()",
            userInfo: nil
        )
        exception.raise()
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:因为函数需要返回一个值,并且上面的函数没有return语句,编译失败. 我需要一些方法来说服编译器这个函数永远不会完成执行,因为它总会引发错误.

如果所有的错误处理看起来都是库级的,那么在Swift中怎么做呢?因此超出了对编译器的理解?是否有任何语言级功能(希望优雅地)终止程序的执行?

compilation abstract throw control-flow swift

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

我如何有条件地退回不同类型的期货?

我有一个方法,根据谓词,将返回一个未来或另一个.换句话说,返回未来的if-else表达式:

extern crate futures; // 0.1.23

use futures::{future, Future};

fn f() -> impl Future<Item = usize, Error = ()> {
    if 1 > 0 {
        future::ok(2).map(|x| x)
    } else {
        future::ok(10).and_then(|x| future::ok(x + 2))
    }
}
Run Code Online (Sandbox Code Playgroud)

这不编译:

error[E0308]: if and else have incompatible types
  --> src/lib.rs:6:5
   |
6  | /     if 1 > 0 {
7  | |         future::ok(2).map(|x| x)
8  | |     } else {
9  | |         future::ok(10).and_then(|x| future::ok(x + 2))
10 | |     }
   | |_____^ expected …
Run Code Online (Sandbox Code Playgroud)

asynchronous future control-flow rust

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

相当于Ruby中的Python"with"

在Python中,该with语句用于确保始终调用清理代码,无论抛出异常还是返回函数调用.例如:

with open("temp.txt", "w") as f:
    f.write("hi")
    raise ValueError("spitespite")
Run Code Online (Sandbox Code Playgroud)

在这里,即使引发了异常,文件也会关闭.这里有一个更好的解释.

Ruby中有这个构造的等价物吗?或者你可以编写一个代码,因为Ruby有延续吗?

ruby python language-features with-statement control-flow

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

这是`try..catch..finally`多余的?

public Foo doDangerousStuff() throws Exception {
    try {
        dangerousMethod();
        return new Foo();
    } catch (Exception e) {
        throw e;
    } finally {
        mustBeCalledAfterDangerousMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

这与我们省略catch子句的行为有什么不同吗?

public Foo doDangerousStuff() throws Exception {
    try {
        dangerousMethod();
        return new Foo();
    } finally {
        mustBeCalledAfterDangerousMethod();
    }
}
Run Code Online (Sandbox Code Playgroud)

[编辑]为了清除混淆,是的,catch除了重新抛出异常之外,该块不执行任何操作.我想知道这是否会在finally调用块时引起某种不同的排序(假设调用者捕获了抛出的异常),但是从我从答案推断出来的情况来看,它并没有.

java exception-handling try-catch-finally control-flow

11
推荐指数
3
解决办法
608
查看次数

Rust 有没有办法区分正常循环终止和中断终止?

铁锈中的惯用语for/else

在 Python 中,我可以使用for/else检查循环是否for在语句处终止break或“正常”完成:

prod = 1
for i in range(1, 10):
    prod *= i
    if prod > 123:
        break
else:
    print("oops! loop terminated without break.")
Run Code Online (Sandbox Code Playgroud)

Rust 有类似的方法吗?这是我最接近的,但并不是特别相似。

let mut prod = 1u64;
let mut found = false;
for i in 1..10 {
    prod *= i;
    if prod > 123 {
        found = true;
        break;
    }
}
if !found {
    println!("oops! loop terminated without break.");
}
Run Code Online (Sandbox Code Playgroud)

似乎有关于Rust Internals的讨论;然而,这更多的是关于未来的可能性,而不是惯用的。 …

for-loop control-flow rust

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