当前位置: 首页 > news >正文

第2章 Rust初体验5/8:match表达式和模式匹配:更富表达力:猜骰子冷热游戏

讲动人的故事,写懂人的代码

2.5 故事3: 比较答案与点数之和

贾克强:“同学们,我们开始用三种语言来实现故事3吧!”

2.5.1 Rust版故事3

这个故事实在是轻松容易地实现了。赵可菲照着书,一下子就写好了。

@@ -1,4 +1,5 @@use rand::Rng;
+use std::cmp::Ordering;use std::io;fn main() {
@@ -16,5 +17,13 @@ fn main() {.read_line(&mut guess).expect("Failed to read line");+    let guess: u32 = guess.trim().parse().expect("Please type a number!");
+println!("You guessed: {guess}");
+
+    match guess.cmp(&sum_of_two_dice) {
+        Ordering::Less => println!("You guessed it wrong on the first try!"),
+        Ordering::Greater => println!("You guessed it wrong on the first try"),
+        Ordering::Equal => println!("You win!"),
+    }}

赵可菲:“这一行就是从Rust的标准库中引入了Ordering枚举,主要是用来做比较的哦。“

+use std::cmp::Ordering;

"这一行是把玩家输入的guess从字符串类型解析成无符号32位整数(u32),然后把空白字符都去掉。如果改不成功,就会打出"Please type a number!"的错误信息。"

+    let guess: u32 = guess.trim().parse().expect("Please type a number!");

“这段代码就是比较你猜的数字和两颗骰子上的点数之和。用cmp方法来比一比,然后返回一个Ordering枚举。根据比较的结果,会显示不一样的信息:如果你猜的数字比点数之和小,就会显示"You guessed it wrong on the first try!"。如果你猜的数字比点数之和大,也会显示"You guessed it wrong on the first try!"。要是你猜对了,就会显示"You win!"

+    match guess.cmp(&sum_of_two_dice) {
+        Ordering::Less => println!("You guesse

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 181.二叉树:验证二叉树(力扣)
  • STM32CUBEIDE使用技巧
  • docker——基础知识
  • 08_第八章 微头条项目开发
  • Spring系统学习 - Bean的作用域
  • 震坤行坤合供应链荣获“2024 LOG低碳供应链物流-最具影响力品牌商”
  • 快捷键专栏 IDEA、Navicat、电脑、Excle、Word等
  • SpringCash
  • Java--数组小结
  • 【Spine学习06】之IK约束绑定,制作人物待机动画,图表塞贝尔曲线优化动作
  • Java之等待唤醒方法
  • 如何成为一名黑客?小白必学的12个基本步骤
  • 【设计模式之组合模式 -- C++】
  • 在项目中使用Volta控制node版本
  • 【css】html 标初始化CSS样式(初学者必看)
  • python3.6+scrapy+mysql 爬虫实战
  • 0基础学习移动端适配
  • android 一些 utils
  • CAP 一致性协议及应用解析
  • dva中组件的懒加载
  • gcc介绍及安装
  • go append函数以及写入
  • js对象的深浅拷贝
  • miaov-React 最佳入门
  • MobX
  • MQ框架的比较
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • Promise面试题2实现异步串行执行
  • React Native移动开发实战-3-实现页面间的数据传递
  • Sequelize 中文文档 v4 - Getting started - 入门
  • session共享问题解决方案
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • use Google search engine
  • vue-loader 源码解析系列之 selector
  • 讲清楚之javascript作用域
  • 京东美团研发面经
  • 使用putty远程连接linux
  • 说说动画卡顿的解决方案
  • 我有几个粽子,和一个故事
  • Android开发者必备:推荐一款助力开发的开源APP
  • linux 淘宝开源监控工具tsar
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • Spring Batch JSON 支持
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #NOIP 2014# day.2 T2 寻找道路
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)fiber的基本认识
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (六)c52学习之旅-独立按键
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (算法)硬币问题
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)