Hands-On Functional Programming in Rust(译) 函数控制流程(第二章)

控制流程是编程的最基本构建块。早期语言没有数据结构或功能的概念,只有程序流。这些控制流结构随着时间的推移而发展,从简单的分支和循环到Rust中可用的复杂值表达式。

在本章中,我们将开始开发项目,该项目将构成本书中所有代码示例的基础。第一个项目的要求立即引入。然后,我们将为您提供可操作的步骤,将项目需求转换为带有测试的代码大纲。最后,我们将为完整的可交付成果开发代码。学习成果:

  • 收集项目要求
  • 根据项目要求构建解决方案
  • 在功能样式中使用和识别表达式
  • 使用集成和单元测试来测试解决方案

技术要求

最新版本的Rust是运行提供的示例所必需的:
https://www.rust-lang.org/en-US/install.html
本章的代码也可以在GitHub上找到:
https://github.com/PacktPublishing/Hands-On-Functional-Programming-in-RUST
每章都包含具体的安装和构建说明
README.md文件。

设计程序

为了设计程序,让我们看一下项目所需的各个方面。

收集项目要求

考虑到这种情况:您的工程公司正在考虑签订合同,为房地产开发商设计控制电梯的软件。该合同列出了正在开发的三座不同高度和非均匀电梯设计的建筑物。电梯设计正由其他分包商最终确定,并将在软件合同授予后不久提供。

要提交您的建议,您的公司应展示您的电梯控制软件的基本功能。然后,一旦获奖,您将被要求将这些功能集成到最终软件中,以及适应物理电梯规格和行为所需的修改。

为了赢得提案,您的团队同意在几个关键点上超越竞争对手。也就是说,您的电梯应该执行以下操作:

  • 减少在楼层之间移动的时间 更准确地停在每个楼层的位置
  • 为运输中的乘客提供更顺畅的乘坐体验
  • 作为伴随项目提案的可交付项目,您需要提供电梯行为的模拟。您负责进一步的细节和实施。

现在应该解决以下问题:

  • 程序访问和存储哪些数据?

  • 该计划期望什么输入?

  • 该程序应该产生什么输出?

经过一番考虑,您的团队对某些行为表示同意:

  • 该程序应强调电梯的位置,速度和加速度。速度决定了行驶持续时间。加速度决定了乘坐舒适性。静止的位置决定了停止精度。这些是贵公司强调的关键卖点,因此演示软件应该反映相同的信息。
  • 作为输入,程序应该采用描述楼层数和楼层高度的文件,最后是电梯要处理的楼层请求列表。
  • 程序的输出应该是有关电梯位置,速度和加速度的实时信息。处理完所有楼层请求后,程序应打印位置,速度和加速度的平均值和标准偏差。

根据需求构建代码映射

为了概述我们的代码解决方案,我们将使用stubs方法。要使用此过程,我们只需正常启动代码项目,并在我们考虑它们时填写高级详细信息。在我们最终确定大纲之前,细节将不会实现。在我们对整个程序设计感到满意之后,我们就可以开始实现程序逻辑了。我们现在开始这个项目。

创建一个Rust项目

要创建一个新的Rust项目,我们将执行以下步骤(或者,您可以调用新的货物):

1.为Rust项目创建一个新文件夹
2.创建Cargo.toml文件,如下所示:

[package]
name = "elevator"
version = "1.0.0"
[dependencies]

3.创建src / main.rs文件,如下所示:

fn main()
{
println!("main")
}

现在,我们可以用货物构建来构建项目。

为每个程序编写存根
需求

计划要求通常表示为结果。运行它时该程序应该有什么影响?用代码回答这个问题通常是直截了当的。以下是有条不紊地将项目需求转换为代码的步骤列表:

1.列出所有计划要求

2.列出每个需求的依赖关系或先决条件

3.从需求和依赖项列表中创建依赖关系图

4.编写实现依赖关系图的存根通过实践,这些步骤可以组合成编写存根代码的单个步骤。但是,如果您在项目的体系结构阶段变得不堪重负,那么明确地执行这些步骤可能会有所帮助。这是将复杂问题分解为较小问题的可靠方法:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rust语言是一种现代的、系统级别的编程语言,它的功能编程特性能够帮助开发者构建高效、安全且可维护的软件。 在Rust中,函数是一等公民。这意味着函数可以直接作为参数传递给其他函数,也可以作为返回值返回。这种特性为函数式编程风格提供了非常好的支持。函数式编程的一个重要思想是将程序划分为独立的函数,并通过将这些函数组合在一起来解决问题。在Rust中,我们可以使用闭包、高阶函数和map、filter等操作来实现函数式编程。 在Rust中,还提供了一些功能编程的工具,比如模式匹配。模式匹配是一种非常强大的工具,它允许我们根据不同的情况执行不同的逻辑。我们可以使用模式匹配来处理多种可能的情况,避免繁琐的if-else语句,提高代码的可读性和可维护性。 此外,Rust中的所有权和借用系统也是支持函数式编程的重要特性。所有权系统确保在编时检查内存安全,避免了常见的内存错误,如空指针引用和多线程竞争。借用系统允许我们以非常安全的方式共享数据,通过引用和生命周期来处理数据的所有权和访问。 通过结合Rust的功能编程特性,我们可以编写高效、可维护和安全的软件。无论是使用闭包进行抽象,还是使用模式匹配来处理复杂的逻辑,都能够为我们提供更好的工具。Rust语言的这些功能编程特性可以帮助开发者在实践中更好地理解和应用函数式编程的原则和模式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值