建议增强object.fieldName为object[fieldName]

建议增强object获取field的方法,增强object.fieldName为object[fieldName],某些情况下更奈斯


评论区

JFinal

2020-12-31 23:14

这个需求以前没人提过,可能并不强列,在语义上不太契合

BTMTimor

2021-01-01 15:32

@JFinal 有些情况可能会用到,比如计算字段,object["col" + 1] = object.getCol1();, object["col" + 2] = object.getCol2();。

BTMTimor

2021-01-01 15:33

这种写法js和php等都行,有些情况很好用

JFinal

2021-01-01 15:58

@BTMTimor 如果对象本身就是 Model 或者 Record 类型的,可以这么来用:
object.get("col" + 1);
可以做到 object["col" + 1] 一样的功能


此外,还提供了 FieldGetter 抽象,可以任意扩展 field 表达式,十分方便
Engine.addFieldGetter(int, FieldGetter)

BTMTimor

2021-01-05 15:22

@JFinal 需要修改public class Index extends Expr或者添加新的Expr

BTMTimor

2021-01-05 16:14

@JFinal index.java:45行开始的eval方法,自定义的FieldGetter虽然返回了值,但是因为target不是list/map/array,最终在85行报错,导致自定义的FieldGetter无法对其他类型的Object起作用,希望能在下一版添加哈

热门反馈

扫码入社