精华内容
下载资源
问答
  • 给大家说个例子,当我们要去判断成绩,是否合格,合格指数,等等就一般需要用到嵌套,相对而言,嵌套是存在着一定的选择性成分,不管是经常能在excel里看到的,还是我们自己现在正在要的,具体如何实现,一起来看...

    大家有了解过怎么去进行嵌套吗?给大家说个例子,当我们要去判断成绩,是否合格,合格指数,等等就一般需要用到嵌套,相对而言,嵌套是存在着一定的选择性成分,不管是经常能在excel里看到的,还是我们自己现在正在要的,具体如何实现,一起来看下吧~

    比如问题:定义一个整数变量 age,编写代码判断年龄是否正确,要求人的年龄在 0-120 之间

    代码演示:

    age = 100
    
    if age >= 0 and age <= 120:
    
    print("年龄正确")
    
    elseprint("年龄不正确")
    

    大家学会了吗?我们对if语句的使用是相当熟悉,所以了解嵌套也是比较容易的

    展开全文
  • 回调函数嵌套Writing unit tests can be fun but also tricky, especially if you’re testing code that may not have been written with unit testing in mind. 编写单元测试可能很有趣,但也很棘手,特别是如果...

    回调函数的嵌套

    Writing unit tests can be fun but also tricky, especially if you’re testing code that may not have been written with unit testing in mind.

    编写单元测试可能很有趣,但也很棘手,特别是如果您要测试的代码可能没有考虑到单元测试的情况。

    One scenario that I keep encountering in various ways — my own unit testing tasks, teammates at work asking “How do I test this?”, this StackOverflow question — is how to unit test a module or function that has business logic contained within a callback function being invoked by a nested entity that needs to be mocked for the test.

    我一直以各种方式遇到的一个场景-我自己的单元测试任务,工作中的队友问“我该如何测试?”, 这个StackOverflow问题 -是如何对在回调中包含业务逻辑的模块或函数进行单元测试由嵌套实体调用的函数,需要对该实体进行模拟以进行测试。

    场景 (The Scenario)

    Here’s an example of app code I’m talking about (Node app code, in this case) that we’d like to write unit tests for:

    这是我正在谈论的应用程序代码示例(在本例中为Node应用程序代码),我们将为此编写单元测试:

    module.exports = (filepath) => {
      return new Promise((resolve, reject) => {
        fs.readFile(filepath, (err, data) => {
          if (err) {
            reject(err);
            return;
          }
    
    
          const parsed = JSON.parse(data);
    
    
          if (parsed.success) {
            resolve(parsed);
          } else {
            reject({ dataError: true });
          }
        });
      });
    };

    (This is a simplified example — I’ve seen callback functions that go for miles.)

    (这是一个简化的示例,我已经看到了许多回调函数。)

    The unit we’re testing here is our customworklist module, which is wrapping the Node fs module in a Promise. We want to add some unit tests for the business logic contained in the callback function being passed to fs.readFile.

    我们在此处测试的单元是自定义worklist模块,该模块将Node fs模块包装在Promise中。 我们要为传递给fs.readFile的回调函数中包含的业务逻辑添加一些单元测试。

    However, that callback gets invoked by fs after its file read is complete, and since we’ll be mocking fs for our unit tests, how do we test that code?

    但是,该回调在文件读取完成后由fs调用,并且由于我们将模拟fs进行单元测试,因此如何测试该代码?

    不同的看法 (A Different View)

    I think what can help is to remember that that passed-in callback is just another argument being passed to the readFile method, like a string or a number. So if, in your mind (I’m not suggesting you modify the app code), you replace that noisy inline function with a simple function reference, it can help clarify what’s going on:

    我认为可以帮助您记住的是,传入的回调只是传递给readFile方法的另一个参数,例如字符串或数字。 因此,如果您想到了(我不建议您修改应用程序代码),而用一个简单的函数引用替换了该嘈杂的内联函数,那么它将有助于弄清发生了什么:

    module.exports = (filepath) => {
      return new Promise((resolve, reject) => {
        fs.readFile(filepath, callback); // <-- replace inline function with function ref
      });
    };

    So now you can see that if we mock fs.readFile, our mock will receive the argumentsfilepath and callback, so you can visualize the app code like this:

    因此,现在您可以看到,如果我们模拟fs.readFile ,我们的模拟将接收参数filepathcallback ,因此您可以像这样可视化应用程序代码:

    module.exports = (filepath) => {
      return new Promise((resolve, reject) => {
        fsMock.readFile(filepath, callback); // <-- our mock readFile is passed the callback
      });
    };

    最终测试 (The Final Test)

    Since our mock readFile method is receiving that callback as a parameter, in our mock we can invoke the callback with whatever err and data arguments we choose in order to test our different scenarios.

    由于我们的模拟readFile方法正在接收该回调作为参数,因此在我们的模拟中,我们可以使用选择的任何errdata参数调用该回调,以测试我们的不同方案。

    For example, here’s what the test for a file read error would look like (this is using Mocha, Chai, and rewire, but the approach is not library-specific):

    例如,这是文件读取错误测试的样子(这是使用MochaChairewire ,但是这种方法不是特定于库的):

    it('rejects if error on file read', () => {
      const errorResponse = { fileError: true };
      const fsMock = {
        readFile: (path, callback) => {
          callback(errorResponse, null); // <--- manually invoke nested callback
        }
      };
    
    
      worklist.__set__('fs', fsMock);
    
    
      return worklist('myfile.json').then((res) => {
      }, (err) => {
        expect(err).to.equal(errorResponse);
      });
    });

    When worklist() is called, the Promise contructor is called, which immediately invokesfs.readFile, which is actually our mock’s readFile method.

    调用worklist() ,将调用Promise构造函数,该构造函数立即调用fs.readFile ,这实际上是我们的模拟程序的readFile方法。

    In our mock, manually invoking the callback with our desired arguments for this particular test exercises the business logic and causes the Promise to reject, which we expect inside the error handler on line 13.

    在我们的模拟中,针对此特定测试使用所需参数来手动调用回调将行使业务逻辑,并导致Promise拒绝,这是我们expect在第13行的错误处理程序内。

    离别的想法 (Parting Thoughts)

    Writing unit tests can be challenging sometimes, especially for legacy code written by developers who were clearly unburdened by the question “How will I unit test this?”

    编写单元测试有时可能会充满挑战,尤其是对于那些显然没有“如何进行单元测试?”这个问题的开发人员编写的遗留代码。

    I generally find the challenging cases enjoyable, though, because it becomes like solving a puzzle. And when you eventually figure out a solution, it’s much more rewarding than just another straightforward test you’ve written hundreds of times before.

    不过,我通常认为具有挑战性的案例很有趣,因为它变得像解决难题一样。 当您最终找到解决方案时,它比您之前编写数百次的另一种简单测试更有意义。

    翻译自: https://medium.com/swlh/how-to-unit-test-a-nested-callback-function-649f4ea68698

    回调函数的嵌套

    展开全文
  • if语句的嵌套

    2020-02-15 16:57:00
    学习到了if函数的用法,做到书上一个练习题,用if语句的嵌套的判断英语成绩78分在什么·成绩段,然后给了一些区段,搞好后我就在想如果把成绩放在一维数组中该如何进行输出和比较,搞了好久终于成功了 ...

    if语句的嵌套了

    学习到了if函数的用法,做到书上一个练习题,用if语句的嵌套的判断英语成绩78分在什么·成绩段,然后给了一些区段,搞好后我就在想如果把成绩放在一维数组中该如何进行输出和比较,搞了好久终于成功了判断一维数组中成绩的区段

    展开全文
  • Java 如何优化if语句嵌套

    千次阅读 2016-04-12 18:03:46
    我们平时写if,switch或for语句是常有的事儿,也一定写过多层if或for语句嵌套的情况,如果代码里的嵌套超过3层,阅读起来就会非常困难了。我们应该尽量避免代码嵌套多层,最好不要超过2层。 if语句嵌套的问题 ...
    我们平时写if,switch或for语句是常有的事儿,也一定写过多层if或for语句嵌套的情况,如果代码里的嵌套超过3层,阅读起来就会非常困难了。我们应该尽量避免代码嵌套多层,最好不要超过2层。

    if语句嵌套的问题

    多层if语句嵌套是常有的事情,有什么好的方法可以减少嵌套呢?

    [color=red]1 尽早终止函数或返回数据[/color]

    如果符合某个条件下可以直接终止函数,则应该将这个条件放在第一位。我们来看看下面的例子。



    if(condition1) {
    if(condition2){
    if(condition3){
    }
    else{
    return;
    }
    }
    else{
    return;
    }
    }
    else {
    return;
    }


    这段代码中if语句嵌套了3层,看起来已经很复杂了,我们可以将最后面的return提取到最前面去。


    if(!condition1){
    return;
    }
    if(!condition2){
    return;
    }
    if(!condition3){
    return;
    }
    //doSomething

    这段代码中,我们把condition1等于false的语句提取到前面,直接终止函数,将多层嵌套的if语句重构成只有一层if语句,代码也更清晰了。

    注意:一般情况下,我们写if语句会将条件为true的情况写在前面,这也比较符合我们的思维习惯。如果是多层嵌套的情况,应该优先减少if语句的嵌套

    [color=red]2 提取内层嵌套为一个函数进行调用
    [/color]

    多层嵌套的时候,我们还可以将内层嵌套提取到一个新的函数中,然后调用该函数,这样代码也就更清晰了。

    原文地址:[url]http://luopq.com/2016/02/21/write-good-function/[/url]
    展开全文
  • if-else 超过三层之后,代码的可读性就会大大降低。可以使用卫语句、策略模式、状态模式来改善代码结构。 具体方案如下: 卫语句 参考链接:https://blog.csdn.net/jw903/article/details/45506777 1.使用卫...
  • 今天对一个函数code review,总结了一个以前看到过的经验:尽量不要再ifelse中嵌套ifelse。 下面贴图,贴代码对比一下。 code review前:   /** * 获取用户信息 * @return link为邀请链接, * score为...
  • 如何实现用函数递归进行多重循环嵌套(不定嵌套的层数),求原理或源码。因为我要做10多重循环,且要求根据输入的值决定嵌套的层数,不然就if写死人了
  • if err != nil { f.SetName(true) log.Println(flag.abrakadabra) } } </code></pre> <p>in the log print - the abrakadabra boolean remains false (starter value), why doesn't it change to true? ...
  • 今天这篇文章,就带着大家盘点一下,这三种语言如何分别使用 “if函数” 。 if函数原理图如下: Excel Excel应该属于人人都会的“数据分析处理”软件了,实际工作中,我们写If嵌套也是时常会有的事儿。但是...
  • js中嵌套函数如何return整体跳出

    千次阅读 2020-05-09 18:02:24
    被同事搞了,问了我这样一个问题:如何在return那边就跳出外部整体的CallUploadTB这个函数。本着乐于助人的心态,我思考许久,java中好像是没有函数里面再写函数的,js中可以,会不会有方法可以跳出整体的。 可过了...
  • 函数的基本概述 在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到...此时的代码该如何定义。先观察以下的案例: whileTrue:ifcpu利用率 >90%:#发送邮件提醒连接邮箱服务器发送邮件关闭连接if...
  • {% if field.indexView %} <td>{{ attribute(data, field.name }}</td> {% endif %} {% endfor %} </tr> {% endfor %} </code></pre> <p>I get the error: <pre><code>Neither the ...
  • if !ok { return fmt.Errorf("value is nil") } return value ,nil } function *good*(client *http.client, key string) { //get a dictionary value dcmap,err := get_dict_key("apple") if err != nil ...
  • 函数的基本概述在学习函数之前,一直遵循:面向过程编程,即:根据业务逻辑从上到下实现功能,可以思考一下如果有某个功能的代码是在多个地方使用的是否可以只写一次?此时的代码该如何定义。先观察以下的案例:...
  • if err != nil { panic(err) } } </code></pre> <p>layout.html</p> <pre><code><!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Example Title - {{...
  • the only 2 things that changes are the link from xpath (what shouldn't be that difficult) and creating dynamic objects-variable (if that exist). <p><em>The code for the first subject (the whole thing...
  • 一、实验作业 ... 改变传参为n/10,再次进入函数printdigits(n/10) 输出n%10; } (2)代码截图 (3)调试问题 本题未遇到问题,在如何输出转化的二进制数上需要思考。 1.2 学生成绩管理系统 1....
  • <p>I have a serious doubt about doing a combo box with... If someone has other ideas about working nested records with Twig Extensions, It would be appreciate too. <p>Thanks a lot your help. </div>
  • 列表list嵌套列表list如何去重 标题 列表去重可以用set()函数,那么列表嵌套列表,如[[],[],[],[]]就不能用set()函数了,会出现错误。具体的应用的场景可以是某些记录的去重操作如出租车出现两条一样的记录需要去重...
  • 一种特殊的嵌套调用 函数自己调用自己或者调用其他函数后再次调用自己 只要是函数之间产生循环一定是递归调用 以斐波拉契数列为例 斐波拉契数列:1,1,2,3,5,8,13,21,34… 斐波拉契数列函数: 非递归: function ...
  • 如何优化代码中大量的if/else

    千次阅读 2019-09-03 23:30:08
    一个快速迭代的项目,时间久了之后,代码中可能会充斥着大量的if/else,嵌套6、7层,一个函数几百行,简!直!看!死!人! 其实这种还算好的,更严重的嵌套我也见过,接手到这种项目的人,内心应该是绝望的。 ...
  • Excel - 自定义函数

    千次阅读 2017-12-12 19:57:06
    你可以嵌套使用IF函数,判断每一个分数属于哪一个区间。 但是,4层IF会不会很容易出错;如果是5个区间,甚至是10个区间呢?嵌套使用10个IF不太现实,也很容易出错吧。 其实在Excel中,我们可以自定义自己的函数,...
  • 相信不少同学在维护老项目时,都遇到过在深深的 if else 之间纠缠的业务逻辑。面对这样的一团乱麻,简单粗暴地继续增量修改常常只会让复杂度越来越高,可读性越来越差,有没有固定的套路来梳理它呢?这里分享三种...
  • 相信不少同学在维护老项目时,都遇到过在深深的 if else 之间纠缠的业务逻辑。面对这样的一团乱麻,简单粗暴地继续增量修改常常只会让复杂度越来越高,可读性越来越差,有没有固定的套路来梳理它呢?这里分享三种...
  • Python 3基础教程9-函数

    2019-03-29 19:02:00
    本文介绍Python中的函数,主要了解如何定义一个函数如何...再升级一下,如何求三个数大小,这里有两个思路,多层嵌套if在一个函数里或者利用maxTwo()函数,这里介绍第二种,代码复用嘛。 转载于:https://www.c...

空空如也

空空如也

1 2 3 4 5 ... 17
收藏数 327
精华内容 130
关键字:

if函数如何嵌套