标签: control-flow

Node.js控制流程:回调还是承诺?

我知道node.js 有很多控制流库.其中一些让一个链异步函数与回调(如async,asyncblock等),其他使用promise概念(Q,延期,期货等).鉴于长时间运行的脚本会一个接一个地执行一系列可能随时失败的操作,您更喜欢哪种控制流程?为什么?优缺点都有什么?

control-flow node.js

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

通过Return与If/Else控制流量

哪一个更好(通过if 返回或控制流的隐式控制流) - 见下文.请解释一下你认为哪个有利/不利.我喜欢选项A,因为它的代码更少.

流程返回:

public ActionResult Edit(MyClass class)
{
    if (!class.Editable)
       return null;

    class.Update();
    return View();
}
Run Code Online (Sandbox Code Playgroud)

通过If/Else流程:

public ActionResult Edit(MyClass class)
{
    if (class.Editable)
    {
       class.Update();
       return View();
    }
    else
    {
       return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# coding-style control-flow

17
推荐指数
3
解决办法
3465
查看次数

如何在GDB中自动打印下N行?

我一直试图找到一种方法来自动化GDB中跟踪程序控制流程的进度.

即使只是一种自动执行n命令的简单方法,您也可以查看调用例程的顺序.

我意识到你可以发出n xx是GDB逐步执行的次数的问题,但问题在于它显示的是命令而不是例程的地址!但是如果你n在GDB中手动按下(然后按回车键发出上一个命令),它会显示地址.

我在GDB中尝试了以下内容:

(after setting a breakpoint at say 0x0123456)
b *0x0123456
Run Code Online (Sandbox Code Playgroud)

GDB说<breakpoint 1 at 0x123456>.我键入:

commands 1
n 1000
c
end
Run Code Online (Sandbox Code Playgroud)

但它没有按预期循环,也没有显示地址位置:-(.

任何帮助,将不胜感激!当然必须简单的自动登录命令例程被调用??

trace gdb dynamic call-graph control-flow

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

SSIS控制流与数据流

我并不完全理解SSIS包中控制流的目的.在我创建的所有软件包中,我只需添加一个数据流组件来控制流,然后其余逻辑就位于数据流中.

我已经看到了更复杂的控制流的示例(EX:foreach循环容器,它迭代Excel文件中的行.),但我正在寻找一个无法在数据流中实现的示例.我可以轻松地在数据流中创建与excel文件的连接.

我试图更好地理解何时需要(或应该)在控制流中实现逻辑与使用数据流来完成所有操作.

是什么促使我开始研究控制流程,其目的是为了重构SSIS数据流以及将包拆分为更小的包,以便更容易支持并发开发.

我试图围绕如何使用控制流来实现这些目的.

ssis control-flow

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

如何从lambda中的函数返回?

考虑以下玩具代码以确定范围是否包含元素:

template<typename Iter, typename T>
bool contains1(Iter begin, Iter end, const T& x)
{
    for (; begin != end; ++begin)
    {
        if (*begin == x) return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

(是的,我知道,标准库中已有完美的算法,但这不是重点.)

我怎么用for_each和lambda 写同样的东西?以下不起作用......

template<typename Iter, typename T>
bool contains2(Iter begin, Iter end, const T& x)
{
    std::for_each(begin, end, [&x](const T& y) {
        if (x == y) return true;
    });
    return false;
}
Run Code Online (Sandbox Code Playgroud)

...因为那只会从lambda返回,而不是从函数返回.

我是否必须抛出异常以摆脱lambda?同样,对于这个特定问题可能有十几个更好的解决方案,根本不涉及lambda,但这不是我要求的.

c++ lambda return control-flow c++11

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

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

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

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

javascript debugging logging trace control-flow

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

为什么循环表达式的简单限制为整数范围?

根据F#的规格(见§6.5.7),for循环简单的通过整数界(int又名int32又名System.Int32)的限制startstop,如

for i = start to stop do
    // do sth.
Run Code Online (Sandbox Code Playgroud)

我想知道为什么要求这种类型的for循环的迭代界限int32.为什么不允许uint32int64bigint

我知道序列迭代表达式(for ... in ...)可以迭代任意序列; 然而,这需要分配一个迭代器和调用MoveNext,Current什么不是,因此可能比普通循环效率低得多(增量计数器,比较,条件跳转).为避免这种情况,您将无法使用while和手动递增循环计数器......

奇怪的是,如果表达式包含在序列表达式中,F#确实允许非int32循环边界for,例如

seq { for i = 0I to 10I do
        printfn "%A" i }
Run Code Online (Sandbox Code Playgroud)

所以,我想问题是:是否有一个特殊的原因只允许int32循环?为什么这个限制不适用于表达式中包含的for循环seq

f# for-loop inline imperative-programming control-flow

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

Swift for-in循环字典实验

我几乎是一个完整的编程初学者,我已经开始通过Apple的Swift电子书.

我读到的东西很清楚,但是一旦你开始尝试,事情变得棘手:).

我坚持在控制流程部分进行实验.这是初始代码:

let interestingNumbers = [
    "Prime": [2, 3, 5, 7, 11, 13],
    "Fibonacci": [1, 1, 2, 3, 5, 8],
    "Square": [1, 4, 9, 16, 25],
]

var largest = 0
for (kind, numbers) in interestingNumbers {
    for number in numbers {
        if number > largest {
            largest = number
        }
    }
}

largest
Run Code Online (Sandbox Code Playgroud)

这是任务:

添加另一个变量以跟踪哪个数字最大,以及最大数量是多少.

据我了解,他们希望我将每个数字类型的所有值相加(得到Prime,Fibonacci和Square的总和),然后比较结果以显示最大的结果.但我无法弄清楚语法.

有人可以就如何解决这个实验分享任何建议吗?也许我不明白这个问题?

dictionary control-flow for-in-loop swift

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

如何在Kotlin模式匹配选项?

是否有可能写出这样的东西,或者我们是否必须恢复到Kotlin中的手动空值检查?

val meaningOfLife : String? = null

when meaningOfLife {
    exists -> println(meaningOfLife)
    else   -> println("There's no meaning")
}
Run Code Online (Sandbox Code Playgroud)

control-flow kotlin

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

如何判断哪个警卫声明失败?

如果我有一堆链式守卫让我们发表声明,我怎么能诊断出哪个条件失败了,不能将我的警卫分成多个陈述?

鉴于这个例子:

guard let keypath = dictionary["field"] as? String,
    let rule = dictionary["rule"] as? String,
    let comparator = FormFieldDisplayRuleComparator(rawValue: rule),
    let value = dictionary["value"]
    else
    {
        return nil
    }
Run Code Online (Sandbox Code Playgroud)

如何判断4个let语句中哪个是失败并调用了else块?

我能想到的最简单的事情是将语句分成4个连续的保护其他语句,但这感觉不对.

 guard let keypath = dictionary["field"] as? String
    else
    {
        print("Keypath failed to load.")

        self.init()
        return nil
    }

    guard let rule = dictionary["rule"] as? String else
    {
        print("Rule failed to load.")

        self.init()
        return nil
    }

    guard let comparator = FormFieldDisplayRuleComparator(rawValue: rule) else
    {
        print("Comparator failed to load for rawValue: \(rule)") …
Run Code Online (Sandbox Code Playgroud)

error-handling control-flow swift

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