Rust 和 Javascript 语法比较

224 阅读1分钟

在掌握了一门语言后,基于熟悉的语言语法结构,在学习新的语言时,从比较中进行学习,学习起来更加轻松。

这里基于 Rust 给出的猜数字游戏,做个比较,加深记忆。

Tip: 语言也是服务于逻辑,一份伪代码,可以通过多种语言实现。需要使用陌生语言实现某个能力时,可以先编写伪代码,然后通过查询文档,逐步进行实现。

引入包

rust

use package::Rng; // :: 类似于 . 运算符,但是访问的是静态方法

javascript

import xxx from 'package'

输出

rust

println!('string');

javascript

console.log('string');

访问静态方法

rust

rand::thread_rng(); // ::

javascript

class Person {
    static fn () {}
}

Person.fn();

循环

rust

loop {
    continue  // 跳过
    break // 中断
}

javascript

while (true) {
    continue  // 跳过
    break // 中断
}

声明变量

rust

// 调用 String 的静态方法 new 返回一个字符串
// mut 表示 guess 可变
let mut guess = String::new(); 

javascript

let guess = '';

分支语句

rust

match xxxx.x() {
    value1 => xx,
    value2 => xx,
    value3 => xx,
};

javascript

switch (x) {
    case value1:
        xx;
    break;
    case value2:
        xx;
    break;
    case value3:
        xx;
    break;
}

模板字符串

rust

let str = "xxx {number}";

javascript

let str = `xxx ${number}`;

猜数游戏

use rand::Rng;
use std::cmp::Ordering;
use std::io;

fn main() {
    println!("Guess the number!");

    let random_number = rand::thread_rng().gen_range(1..=100);

    loop {
        println!("Please input your guess.");

        let mut guess = String::new();

        io::stdin()
            .read_line(&mut guess)
            .expect("Failed to read line");

        let guess: u32 = match guess.trim().parse() {
            Ok(num) => num,
            Err(_) => continue,
        };

        println!("You guessed: {guess}");

        match guess.cmp(&random_number) {
            Ordering::Less => println!("Too small!"),
            Ordering::Greater => println!("Too big!"),
            Ordering::Equal => {
                println!("You win!");
                break;
            }
        };
    }
}