我想浅谈Scala中的列表.
我想做像:
val myList = List("foo", "bar")
val myListCopy = myList.clone
Run Code Online (Sandbox Code Playgroud)
但克隆方法受到保护.
我正在尝试在List.foreach中调用2参数函数,并为循环修复第一个参数.实际上我想把两个参数的函数调成一个参数的函数,该函数返回一个参数的函数(如List.foldLeft do)
这不起作用:
private def mathFunc1(a: Double, b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(mathFunc1(2.1))
}
Run Code Online (Sandbox Code Playgroud)
这有效:
private def mathFunc2(a: Double)(b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(mathFunc2(2.1))
}
Run Code Online (Sandbox Code Playgroud)
但是我不想改变mathFunc1的签名,所以我想做类似的事情:
private def mathFunc1(a: Double, b: Double) =
println(a + b)
def eval(v: Double) = {
List(1.0, 2.0, 3.0).foreach(CONVERT_TWO_PARAMS_TO_ONE_ONE(mathFunc1)(2.1))
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试设置一个 CouchDB 数据库,该数据库可以公开写入并且只能由“管理员”角色读取。我怎样才能做到这一点。是否有类似validate_doc_update的访问文档的功能?
我阅读了有关编译模式的文档,但我没有找到任何技术来高亮显示编译错误的源代码.
例如,更改产生编译错误的源代码的背景颜色(如Eclipse或Netbeans中的红色下划线).还有一种在某处读取错误消息的方法.
我正在浏览scala测试,我不明白为什么编译器在比较"两个新鲜对象"时会产生警告.
这是测试'输出:http: //lampsvn.epfl.ch/trac/scala/browser/scala/trunk/test/files/neg/checksensible.check
例:
checksensible.scala:12: warning: comparing a fresh object using `!=' will always yield true
println(new Exception() != new Exception())
^
Run Code Online (Sandbox Code Playgroud)
如果我编写一个实现==方法的类,它也会产生这个警告:
class Foo(val bar: Int) {
def ==(other: Foo) : Boolean = this.bar == other.bar
}
new Foo(1) == new Foo(1)
warning: comparing a fresh object using `==' will always yield false
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢oxbow_lakes,我必须覆盖equals方法,而不是==
class Foo(val bar: Int) {
override def equals(other: Any) : Boolean = other match {
case other: Foo => this.bar …Run Code Online (Sandbox Code Playgroud) scala ×3
compilation ×1
copy ×1
couchdb ×1
currying ×1
emacs ×1
list ×1
shallow-copy ×1
writeonly ×1