proposal: effect
Closed this issue · 0 comments
Chronostasys commented
https://zhuanlan.zhihu.com/p/603496729?utm_source=qq&utm_medium=social&utm_oi=1076125508198244352
灵感来自于该博客,但是该博客原本的方案存在一些问题:
- effect隐式的起作用,显式写出来反而不起作用,不符合直觉
- 原文中的语法和取字段一样,让人困惑,而且会出现
let a = task.future
正确,let a = task;let b = a.future
的奇怪情况 - effect隐式起作用,很可能导致作用域混乱。在同一个作用域中有同一类型的多个effect的时候,该使用哪一个?
针对以上问题进行改进,主要有以下两点:
- 函数申明的时候指定effect,调用的时候自动用该effect
- 增加特殊关键字来表达不使用effect
对于第1点,还有一种等效的改进方案可能更好:
编码者在项目级别或者文件级别指定特定类型默认的effect,在作用域内所有返回该类型的函数都默认使用该effect
不同的人可能有不同的编码习惯,所以使用effect交给用户自定义显然是更好的