V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Braisdom  ›  全部回复第 26 页 / 共 31 页
回复总数  612
1 ... 18  19  20  21  22  23  24  25  26  27 ... 31  
2020-12-05 09:32:38 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@namelosw 你说的很对,优先级是主要问题,是从数学延续下来的,也是目前无法改变的事实,只能用其它的方法来解决,表达式的表现力 相比 函数嵌套的表达力 还是强很多的。

所以重载在这种场景下,是必须的
2020-12-04 21:22:43 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@callofmx 如果语言可以选择,kotlin 不是我最佳选择。

算符重载 适合不同的场景,滥用了也就失去意义了
2020-12-04 21:05:55 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@ximigou007 不是随意重载,有兴趣看一下我的代码: https://github.com/braisdom/ObjectiveSql

我只是翻译
2020-12-04 21:04:37 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@namelosw
@secondwtq

两位没有仔细看我帖子的内容,使用 运算符计算 和函数计算 在简单的时候没有区别,关键,如果一个表达式过于复杂会是个什么样子,例如:(1+1) * 1 / 1 > 1 && (2 + 2) * 2 /2 < 2 你们可以试一下这样一眼能看清的表达式通过函数什么是个什么样子
2020-12-04 18:11:07 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@wysnylc 语法太复杂,我需要的是最简单的表达式,没必要绕那么多弯
2020-12-04 18:08:15 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@aguesuka 是的,所以我采用的是比较迂回的方法,先解析表达式,然后在编译期覆盖代码实现的

期待 JDK 后续变化,我提个 issue 给 JDK
2020-12-04 17:33:29 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@cpstar 这是 OO 里最传统的想法,不能为了 OO 而去 OO,过于理论化的思考,而不考虑实际。

一个同环比的计算是最常见的:(sum(current) - sum(last)) / sum(last) * 100
这样的表达式用函数做就太复杂了
2020-12-04 17:29:48 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@ximigou007 我觉得是个人偏好的问题,只是 Java 的创始人不喜欢运算符重载,但它想的不够远
2020-12-04 15:00:22 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@Vedar 同意,我很敬佩 C++ 的设计者,他们能解决我们“不知道我们不知道的事情”
2020-12-04 14:59:26 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@no1xsyzy 不同的思考维度,肯定不是某一个,或某一些原因。

我们生活的世界有两个,一个是真实运行的世界,还有一个是脑子里的世界(也就是“应该”的世界),但两都往往偏差很大
2020-12-04 14:57:15 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@no1xsyzy 我相信 Java 后面必定会支持运算符重载,虽然现在没有真实的项目在用,我是第一个,国外有几篇论文在讨论。

DSL 是一个很泛的概念,SQL 是一个 DSL,基于 Java 的 API 封装的 SQL 不一定属于 DSL 的范畴,因为它是一个高度抽象的语言,存在的只是一堆 Interface,基于 Interface 可以实现很多特性
2020-12-04 14:54:17 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@no1xsyzy 小细节...
2020-12-04 14:52:12 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@no1xsyzy Smalltalk 是面向对象的鼻祖,很多概念都被借鉴了,为什么不能发展起来,也是有它内在的原因
2020-12-04 14:50:45 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@xzenge 有时候由不得你去选择,解决 Java 的运算符重载,也是被迫的
2020-12-04 14:49:50 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@lewis89 一个语言要能跟随的时代的发展,C++ 的设计就是为了解决“我们不知道的不知道的东西”,很伟大。
2020-12-04 14:48:29 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
@PVG 认可你的想法,的确可以想干什么就干什么
2020-12-04 14:08:20 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
没有运算符重载者是恶梦的开始
2020-12-04 13:51:29 +08:00
回复了 Braisdom 创建的主题 程序员 Java 运算符重载(Operator Overloading)原理
有兴趣的,可以交流
2020-12-01 15:00:12 +08:00
回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
@zhangysh1995 [email protected]
ORM 性能问题不是慢 SQL,而是在大规模写和读时的性能,这块我还在优化,和 MyBatis 的性能差不多,但离 JDBC 原始 SQL 还是有差距。
2020-12-01 10:10:01 +08:00
回复了 Braisdom 创建的主题 程序员 ObjectiveSQL 稳定版本发布 1.4.0
我也在 gist 里回复了。

public List<User> searchUser(String name, Integer age) {
User.Table user = User.asTable();
Select select = new Select();
LogicalExpression predicate = new PolynaryExpression(EQ, $("1"), $("1"));

if(StringUtils.isNotBland(name)) {
predicate.and(user.name.eq(name));
}

if(age > 0) {
predicate.and(user.age.eq(age));
}

return select.orderBy(user.id.asc()).execute(User.class);
}
1 ... 18  19  20  21  22  23  24  25  26  27 ... 31  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2601 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 14ms · UTC 01:46 · PVG 09:46 · LAX 17:46 · JFK 20:46
Developed with CodeLauncher
♥ Do have faith in what you're doing.