java我应该改成scala来创建一个具有重写规则的系统吗?
我开发了一些类,我正在Android应用程序中使用它们。我在这个核心中有大约6-7个类,其中一些是带有抽象方法的抽象类。创建这些类是为了提供一个API来扩展我的Android应用程序
现在我想创建一个接受重写规则的可扩展系统。这些规则对于在运行时替换某些组件很有用。想象一个有数学运算的系统,你可以看到所有的和,乘法,等等。现在你可以缩小,我想根据缩放级别简化一些运算
我的系统是用java构建的,但我相信scala和模式匹配可以简化我的问题。然而,每次我看scala的时候,我都会看到我要花很多时间和很多头痛
我的类用于创建如下结构:
我希望能够编写规则,创建包含其他块的块。比如:
Integer Provider + Integer Provider -> Sum Provider
Sum Provider + Sum -> Sum Provider
规则可以由程序员创建。我的结构中的任何元素也可以由程序员构建。我不知道scala是否简化了这个规则引擎系统,但我知道在java中构建这个引擎可能会很无聊(可能会产生很多bug,我会忘记一些情况,等等)
我应该把所有系统都改成scala吗?还是只有scala的这一功能可以使用?值得吗
PS:有关结构的更多信息,请参见本帖User Experience
# 1 楼答案
如果你要切换到Scala,尽你所能切换到它。使用Java几乎没有意义
值得投资吗?从网上阅读的内容(以及我自己的印象)来看,使用Scala不会更快,但会学到很多东西
所以,如果你只关心开发速度:忽略Scala
如果你想学习:Scala是下一个学习和使用的语言
# 2 楼答案
是的,在Scala中编写这样的规则很容易,事实上,Scala中的规则重写系统在堆栈溢出方面存在一些问题。此外,有一些库可能会在这方面帮助您,与战略编程和nlp相关,但我没有使用它们,所以我不能发表太多评论
现在,我不知道这些课程是从哪里来的。如果您正在解析和构建它们,parser combinator库可以轻松地处理它:
如果您以其他方式拥有这些类,并且正在应用简化,您可以这样做:
这里的重要元素是案例类,提取器和模式匹配