翼度科技»论坛 编程开发 JavaScript 查看内容

ECMAScript 安全赋值运算符 (?=) 提案介绍及其 Polyfill

2

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
本文介绍最新的 ECMAScript 安全赋值运算符提案以及相应的替代实现
前言

我们经常会跟 try/catch 打交道,但如果你写过 Go 或者 Rust 就会发现在这两种语言中是没有 try/catch 的,那么这些语言怎么进行错误捕获呢
  1. f, err := os.Open("filename.ext")
  2. if err != nil {
  3.     log.Fatal(err)
  4. }
  5. // do something with the open *File f
复制代码
  1. use std::num::ParseIntError;
  2. fn multiply(first_number_str: &str, second_number_str: &str) -> Result<i32, ParseIntError> {
  3.     let first_number = first_number_str.parse::<i32>()?;
  4.     let second_number = second_number_str.parse::<i32>()?;
  5.     Ok(first_number * second_number)
  6. }
  7. fn print(result: Result<i32, ParseIntError>) {
  8.     match result {
  9.         Ok(n)  => println!("n is {}", n),
  10.         Err(e) => println!("Error: {}", e),
  11.     }
  12. }
  13. fn main() {
  14.     print(multiply("10", "2"));
  15.     print(multiply("t", "2"));
  16. }
复制代码
  1. func fetchData() -> Data? {
  2.     if let data = try? fetchDataFromDisk() { return data }
  3.     if let data = try? fetchDataFromServer() { return data }
  4.     return nil
  5. }
  6. let photo = try! loadImage(atPath: "./Resources/John Appleseed.jpg")
复制代码
  1. const parseU64 = @import("error_union_parsing_u64.zig").parseU64;
  2. fn doAThing(str: []u8) !void {
  3.     const number = try parseU64(str, 10);
  4.     _ = number; // ...
  5. }
复制代码
好了,以上例子仅用于体现 JavaScript 语法的简单(笑

不过也确实写 try/catch 嵌套写烦了,偶然发现了这个 ?= 提案,眼前一亮,真的简洁直观
来源:https://www.cnblogs.com/himeka/p/18544502
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

举报 回复 使用道具