我有一些大的文本文件,我将进行连续匹配(只是捕获,而不是替换).我认为将整个文件保存在内存中并不是一个好主意,而是使用a Reader.
我对输入的了解是,如果匹配,它不会超过5行.所以我的想法是有一些缓冲区只保留这5行,或者左右,进行第一次搜索,然后继续.但它必须"知道"正则表达式匹配结束的位置才能实现.例如,如果匹配在第2行结束,它应该从这里开始下一次搜索.是否有可能以有效的方式做这样的事情?
def m(x: Int): Any = { }
var set = new HashSet[Int => Any]
set += m
set += m
Run Code Online (Sandbox Code Playgroud)
set.size现在是2,并且set.contains(m)是假的,因为显然m部分应用了两次并且创建了两个函数对象.如果m是一个函数,它按预期工作.如果它们引用相同的方法,我想将函数视为等于.可以这样做吗?(不转向带键返回的地图,或者传递其他中间变量)
我一直在阅读试图抓住围绕摆动文件API的javadoc,但我不能得到的东西懂事了它,因为有这么多的类:Document,StyledDocument,AbstractDocument,DefaultStyledDocument,PlainDocument,HTMLDocument,有人提及DocumentFilter.这个问题在一般情况下更多,所以有人可以概述实现之间的差异以及不同的接口和摘要的用途吗?
对于我的具体情况,我想要实现的是一个数据结构,它将:
我能用于此的任何东西,还是扩展一些东西更好?如果是这样,什么?
javafx api的定义如下:
void addListener(ChangeListener<? super java.lang.Boolean> listener)
Run Code Online (Sandbox Code Playgroud)
以下代码..
new TextArea().focusedProperty.addListener(new ChangeListener[Boolean]() {
def changed(observable: ObservableValue[_ <: Boolean], oldValue: Boolean, newValue: Boolean) {
}
})
Run Code Online (Sandbox Code Playgroud)
..给出了这个错误:
重载方法值addListener with alternatives:(javafx.beans.value.ChangeListener [_>:java.lang.Boolean])Unit(javafx.beans.InvalidationListener)Unit不能应用于(带有javafx.beans的java.lang.Object). value.ChangeListener [布尔])
如果我使用java.lang.Boolean而不是Boolean,它可以工作,但不能使用scala的布尔值.这是为什么?是否可以使用此API而无需键入完全限定的名称?