约会Appointment

Posted 总是幸福的老豌豆

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了约会Appointment相关的知识,希望对你有一定的参考价值。

前言

加油

原文

约会常用会话

❶ The meeting is scheduled for Friday afternoon.
会议安排在星期五下午。

❷ He got a date with Amanda tomorrow night.
明天晚上他跟阿曼达有个约会。

❸ They’re going to honeymoon in Europe.
他们打算在欧洲度蜜月。

❹ Will you help me prepare for the get-together of the old classmates?
你能否帮我为这次老同学聚会做好准备工作?


❶ The boy whistled happily as he walked.
男孩边走边高兴地吹口哨。

❷ What first attracted me was her sense of humor.
她首先吸引我的是她的幽默。

C# periodsssss [重复]

【中文标题】C# periodsssss [重复]【英文标题】:C# periodssssss [duplicate] 【发布时间】:2021-08-04 13:30:25 【问题描述】:

我得到了以下任务:

如果可以将给定的约会添加到约会列表中而不重叠,则返回 true 任何其他约会。 name="appointments">当前约会列表 name="appointment">要检查它是否适合其他约会的新约会 如果新约会适合当前约会,则为真:“9-10”、“11-12”、“15-16”

我当前的代码是:

public bool IsAvailable(Appointment[] appointments, Appointment appointment)
                
    bool overlap = true;

    foreach (var afspraak in appointments)
    
        overlap = (afspraak.Start >= appointment.End || appointment.Start <= afspraak.End);
    

    return overlap;

这段代码通过了 18 个单元测试中的 10 个:

Should return True:
        [TestCase("8-9")]       passed
        [TestCase("8-8:30")]    passed
        [TestCase("10-11")]     passed
        [TestCase("10:45-11")]  passed
        [TestCase("12-15")]     passed
        [TestCase("12-13")]     passed
        [TestCase("13-14")]     passed
        [TestCase("14-15")]     passed
        [TestCase("16-17")]     passed
        [TestCase("16:30-17")]  failed

Should return False:
        [TestCase("7-8")]       failed
        [TestCase("8-9:30")]    failed
        [TestCase("9:30-9:45")] failed
        [TestCase("9:30-11")]   failed
        [TestCase("8-10:30")]   failed
        [TestCase("17-18")]     passed
        [TestCase("12-18")]     failed
        [TestCase("11:30-12:30")] failed

我真的无法弄清楚我做错了什么,有人看到我做错了什么吗?

更新 2: 问题是只有现在“应该返回错误的单元测试”才能通过:(

------
          

【问题讨论】:

你没有跳出 for 循环,所以只有约会中的最后一个 afspraak 会影响重叠值。 【参考方案1】:

使用您当前的方法,bool overlap 仅设置为最后一个比较结果。

一旦检测到无法添加约会而不重叠,请考虑中断/返回。

public bool IsAvailable(Appointment[] appointments, Appointment appointment)
                
    foreach (var afspraak in appointments)
    
        if((afspraak.Start >= appointment.End && appointment.End <= afspraak.Start) is false)
        
            // return here, if the appointment overlaps, no need to continue checking
            return false;
        
    

    return true;

【讨论】:

好吧,它也将节省宝贵的计算时间!除此之外,处理布尔表达式时不需要is false==false 绝对!条件布尔语句不需要is false。但是,是否使用 bang 符号 (!) 会降低可读性是有争议的。我建议遵循老师要求的代码风格和设计指南。还应注意,编译器将此比较减少到相同的 IL。 首先感谢您的回答!我检查了你的代码,你是对的,当它面临错误时,它不应该继续检查其他重叠!但是,如果将您的更改放入我的代码中,它只会传递返回真正的单元测试。见更新2 我继续为您更新了它,试试看。我修改了条件检查。 我的代码请参阅更新 2 :)

以上是关于约会Appointment的主要内容,如果未能解决你的问题,请参考以下文章

C# periodsssss [重复]

试图获得每个州的总约会。在 MySQL 1055 中出现错误

循环在第一个 Cursor.execute() 之后停止

Django 复杂查询

在 rails collection_select 中使用短日期时间

尝试通过交换 api 在交换日历上创建会议时出错