sui_rust/ch01/expr.rs
1#![allow(unused_variables)]
2//! 第一章:Rust语言基础
3//! 1.4 语法面面观(二):面向表达式(上)
4//!
5//!
6//!
7
8/**
9
10 ### 面向表达式 (Expression-Oriented programming)
11
12 ```
13 use std::collections::HashMap;
14
15 fn add_one(i: &mut u32) {
16 *i += 1;
17 }
18
19 fn plus_one(i: &u32) -> u32 {
20 let i = i + 1;
21 i
22 }
23
24 fn main() {
25 let mut a = 41 ;
26 add_one(&mut a) ;
27 println!("{:?}", a) ;
28
29 let a = 41;
30 let b = plus_one(&a);
31 println!("{:?}", b) ;
32
33 let mut h = HashMap::new();
34 h.insert("anwser", 42);
35 println!("anwser is {:?}", h["anwser"]);
36 }
37 ```
38*/
39pub fn eop() {
40 println!("1.4 : Expression-Oriented programming");
41}
42
43/**
44
45 ### 分号表达式 vs 块表达式
46
47 1. 分号表达式返回值永远为自身的单元(Unit)类型:`()`
48 2. 分号表达式只有在块表达式最后一行才会进行求值,其他时候只作为「连接符」存在
49 3. 块表达式只对其最后一行表达式进行求值。
50
51 ```
52 fn main(){
53 ;
54 ;
55 {
56 ()
57 }
58 {
59 ();
60 use std::vec::Vec;
61 }
62 ();
63 &();
64 &{;}; // -> &()
65 ; // -> ()
66 }
67 ```
68*/
69pub fn semi_and_block_expr() {
70 println!("1.4 : Semi vs Block ");
71}
72
73/**
74
75 ### FizzBuzz in match
76
77 ```
78 fn main() {
79 for i in 1..102 {
80 match (i%3, i%5) {
81 (0, 0) => println!("FizzBuzz"),
82 (0, _) => println!("Fizz"),
83 (_, 0) => println!("Buzz"),
84 (_, _) => println!("{}", i)
85 }
86 }
87 }
88 ```
89*/
90pub fn fizzbuzz_match() {
91 println!(" 1.4 : FizzBuzz in match ");
92}
93
94/**
95
96 ### FizzBuzz in if
97
98 ```
99 fn main() {
100 for i in 1..102 {
101 if i % 15 == 0 { println!("FizzBuzz") }
102 else if i % 3 == 0 { println!("Fizz") }
103 else if i % 5 == 0 { println!("Buzz") }
104 else { println!("{}", i) }
105 }
106 }
107
108 ```
109
110*/
111pub fn fizzbuzz_if() {
112 println!(" 1.4 : FizzBuzz in if ");
113}