通过在 CodeSOD 上编辑 假设您有一个 64 位整数。您需要第一个 42 位。现在,如果你的语言有一个位移操作符,你会很想做诸如 largeNumber >> 22 之类的事情。但是如果你的语言也有各种高级流处理和映射函数呢?不使用这些将是一种耻辱。 Tarah 的商店使用 Rust,因此他们确实拥有所有那些令人兴奋的高级流处理。她的同事决定只需要使用它们: let binary = format!( "{:b}", snowflake);让 in_binary: u64 = binary[.. 42] .to_string() .chars() .rev() .enumerate() .map(|(idx, digit)| { ( u64::from_str_radix(&digit.to_string(), 2).unwrap()) * (( 2_u64).pow(idx as u32)) }) .sum();这首先取一个数字,并将其转换为包含二进制表示的字符串。然后我们砍掉该字符串的前 42 个字符,将它们分解成字符,反转流,枚举它,然后应用一个映射,我们将每个字符解析回一个数字(将是 0 或 1),然后乘以它由两个提高到我们所使用的索引的幂。总结一下,我们得到了 64 位数字的前 42 位。当然,snowflake >> 22 会更短、更清晰、效率更高,但它不会让您展示您可以使用的所有酷语言功能,这不是真正重要的吗? [广告] Otter - 无需登录命令提示符即可自动配置您的服务器。今天就开始吧!