我正在用scala编写一个小应用程序.应用程序处理简单的日志文件.因为处理需要一些时间,所以我决定让我的应用程序核心扩展Actor.
class Application extends Actor {
def react() {
loop {
react {
case Process(file) => // do something interesting with file...
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
通过单击gui中的按钮来触发日志文件的处理.gui使用scala swing.
object Gui extends SimpleSwingApplication {
val application = new Application().start()
def top = new MainFrame {
val startButton = new Button
reactions += {
case ButtonClicked(`startButton`) => application ! Process(file)
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,应用程序核心需要通知gui当前的进度.
sender ! Progress(value) // whenever progress is made
Run Code Online (Sandbox Code Playgroud)
我通过在gui中创建一个单独的actor来解决这个问题.actor在edt线程内执行.它侦听来自应用程序核心的消息并更新gui.
object Gui extends SimpleSwingApplication {
val actor = new …Run Code Online (Sandbox Code Playgroud) 我想选择名为"a"的节点的第一个孩子Elem.我现在得到的是:
(xml \ "a")(0).child.collect {case e: Elem => e}
Run Code Online (Sandbox Code Playgroud)
这非常冗长.我在寻找类似的东西:
xml \ "a" \ "*"
Run Code Online (Sandbox Code Playgroud)
这可能在scala中吗?
通常,在对现有项目进行一些工作时,我会选择代码库中已经建立的任何样式.但我们的团队必须维护多个中小型项目,这些项目在编码风格上略有不同.如果我们能够清理这些差异,那将更有效,更少混乱.
所以我正在寻找一种允许我重构现有风格的工具.标准代码格式化工具已经提供了许多功能,例如更改缩进样式.我缺少的是一个允许我去除字段和参数名称前缀的工具.在某些项目中,所有成员都以"m"为前缀,所有参数都以"p"为前缀,静态成员以"s"为前缀.
该工具应该能够处理如下情况:
void setValue(String pValue) {
mValue = pValue;
}
Run Code Online (Sandbox Code Playgroud)
哪个应该成为:
void setValue(String value) {
this.value = value;
}
Run Code Online (Sandbox Code Playgroud)
该工具应在以下情况下生成警告:
void setValue(String pValue) {
int value = 42
}
Run Code Online (Sandbox Code Playgroud)
我知道每个主要IDE都提供重构:重命名功能.我正在寻找的是一个处理整个代码库的工具,而不需要单独遍历每个参数/字段.
编辑
很多答案提到了重新格式化源代码或根据一组样式规则检查代码库的工具.我知道这些工具存在.我特别想要的是一个高级工具,它允许我删除范围特定的变量名称前缀.
在Java中,类java.swing.Box包含用于创建水平和垂直支柱和粘合的方法.使用BoxLayout时,Struts和glue对于space元素非常有用.
Box.createHorizontalStrut(10)
Box.createVerticalStrut(10)
Box.createHorizontalGlue()
Box.createVerticalGlue()
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到scala中的相应方法?