1 quinoa42 2019-02-09 10:36:08 +08:00 可是 Option 不是 Rust 独创的,至少 SML 就支持了 http://sml-family.org/Basis/option.html |
![]() | 2 trait 2019-02-09 10:51:10 +08:00 ![]() @quinoa42 额,貌似没说 rust 独创吧 match 能不能以 struc-tural equivalence 的方式实现 [Some({some:{data:Number}}), () => this.setState({ name: option.unwrap().some.data })], 这里的 data 直接吗调好后取出来 |
![]() | 4 emlcj 2019-02-09 11:17:08 +08:00 ![]() |
![]() | 5 cuebyte 2019-02-09 11:38:11 +08:00 少年是用 rust 前端吧 |
![]() | 7 exoticknight OP @trait 有这么想过,只是从语法上看的话似乎很难判定使用者究竟想要什么样的数据 |
![]() | 8 exoticknight OP @emlcj 模式匹配很好啊,希望赶紧能用吧~ |
![]() | 9 exoticknight OP @cuebyte rust 对 wasm 的支持比较有望,这未尝不是一个写前端好途径,不过做业务我还是 js 或者 ts 吧 |
10 azh7138m 2019-02-09 13:48:14 +08:00 via Android 可以直接放在 jsx 上面嘛,提供一个 match 和 where 组件,不是舒舒服服? 在已经合进标准的 js 语法里面实现模式匹配,写起来总是看着怪怪的。 |
![]() | 11 exoticknight OP @azh7138m 可以考虑做一个 react 组件。js 模式匹配还在 stage1。 |
12 azh7138m 2019-02-09 20:17:47 +08:00 @exoticknight https://codesandbox.io/s/rlp0kyj6o4 大概这样子吧,见笑了 |
13 azh7138m 2019-02-09 20:18:40 +08:00 写完看了一下,这不就是 react router...... |
14 azh7138m 2019-02-09 20:26:02 +08:00 如果要合理实现的话,得允许 when 是一个函数,里面某一个 value 也得可以是一个 value ;判断要放到 Case 上面做,value 用 context 传下去。 感觉并不会提高生产力。 |
![]() | 15 exoticknight OP @azh7138m 看了一下 sandbox,的确很像 react router。如果用 jsx 的话,或许可以直接用那个 stage1 的语法。 我这个库嘛,重点是在 Option 和 Result (还有不想写 try...catch),只是使用这两个东西还是要配上 match 比较好。库里的 match 实现也支持多种类型,但看 tc39 的话不知道它还能支持什么。 |
![]() | 16 exoticknight OP @trait 比如 Some({some:{data:Number, another: Number}}),这样我不知道是提取 data 还是提取 another。 但或许可以退一步,把 Some / Ok / Err 里的东西 unwrap 出来,我抽时间改进一下 |