这次发布一下 2.1.0-beta,依然是个 beta 版本,原因参考这里:https://www.oschina.net/news/85315/febit-wit-2-0-0-beta。 <dependency>
<groupId>org.febit.wit</groupId>
<artifactId>wit-core</artifactId>
<version>2.1.0-beta</version>
</dependency> 本次更新带来一个新语法:
和 Java8 中新增的函数引用操作符是同一个概念, `Math::max` `String::valueOf` 这样,就得到了一个函数的引用, 不仅仅是静态函数,构造函数也可以 `StringBuilder::new`,成员函数也可以 `String::length`,还可以带包名 `java.util.List::size`,当然,如果 `@import java.util.List;` 之后可以简写成 `List::size`。 那么怎么吃? {
@import org.febit.wit.util.StringUtil;
var max = Math::max;
assertEquals(max(1,2), 2);
assertEquals(Math::max(1,2), 2);
assertEquals(Math::min(1,2), 1);
assertEquals(String::length("1234"), 4);
assertEquals(String::valueOf("1234"), "1234");
assertEquals(String::valueOf(1234), "1234");
assertEquals(Integer::parseInt("1234"), 1234);
assertEquals(Long::parseLong("1234"), 1234L);
assertEquals(StringUtil::format("[0]={}, [1]={}, [2]:{}", ["aaaa", "bbb", 2]), "[0]=aaaa, [1]=bbb, [2]:2");
}
{
var new_stringbuilder = native new StringBuilder();
var buf = new_stringbuilder();
buf.~append("123").~append(456);
assertEquals("123456", buf.~toString());
assertEquals("123456", StringBuilder::toString(buf));
}
{
var buf = StringBuilder::new();
StringBuilder::append(StringBuilder::append(buf, "123"), "233");
assertEquals("123233", StringBuilder::toString(buf));
buf = StringBuilder::new("233");
assertEquals("233", buf.~toString());
buf = StringBuilder::new(123);
assertEquals(123, buf.~capacity());
} 好了,有同学就问了,“现在前后端都分离了,你做这个破东西有啥用?” papapa,敲黑板!对于前后端分离,我是双手赞成!实际上在做这个模板引擎之前,作为青涩的全栈小码农,就已经在实践前后端分离了。 当规则引擎来用,取出持久化的每个字段的表达式,拼成脚本然后执行得到结果 放个例子出来: 感兴趣的话,关注一下 https://github.com/febit 吧,等有时间,再做几个例子传上去。 就这样~~ |