小编Nic*_*las的帖子

RDF存储与传统数据库的性能比较

有人试验像芝麻这样的RDF存储解决方案吗?与传统的数据库解决方案相比,我正在寻找这种解决方案的性能评估.

database performance rdf sesame openrdf

12
推荐指数
1
解决办法
2501
查看次数

案例类和特征的线性化

假设我想编写一个case类Stepper,如下所示:

case class Stepper(step: Int) {def apply(x: Int) = x + step}
Run Code Online (Sandbox Code Playgroud)

它带有一个很好的toString实现:

scala> Stepper(42).toString
res0: String = Stepper(42)
Run Code Online (Sandbox Code Playgroud)

但它不是真正的功能:

scala> Some(2) map Stepper(2)
<console>:10: error: type mismatch;
 found   : Stepper
 required: Int => ?
              Some(2) map Stepper(2)
Run Code Online (Sandbox Code Playgroud)

解决方法是实现Function特性......

case class Stepper(step: Int) extends (Int => Int) {def apply(x: Int) = x + step}
Run Code Online (Sandbox Code Playgroud)

但是,我不能再免费获得一个很好的toString实现了:

scala> Stepper(42).toString
res2: java.lang.String = <function1>
Run Code Online (Sandbox Code Playgroud)

然后,问题是:我可以充分利用这两个世界吗?有没有一个解决方案,我有漂亮的toString自由执行特点的实现Function.换句话说,有没有办法以最终应用case class语法糖的方式应用线性化?

scala traits case-class

10
推荐指数
1
解决办法
397
查看次数

Scala:在文件中查找DTD声明

我不熟悉scala XML库.有没有一种简单的方法来查找文档的DTD?从我到目前为止看到的,scala.xml.XML.load只返回Elem(文档的XML内容),但不是它的DTD.有没有其他方法专门做到这一点?

额外的问题:文档开头的XML声明的相同问题.

xml dtd scala

9
推荐指数
1
解决办法
444
查看次数

静态地确定Scala类是否是不可变的

我刚刚参加了暑期学校的斯卡拉讲座.讲师得到了以下问题:

- "有没有办法让编译器判断一个类是不可变的?"

讲师回答说

- "不,没有.如果可能的话会非常好. "

我很惊讶.不仅仅是检查该类是否包含任何var-members?

scala immutability

9
推荐指数
2
解决办法
824
查看次数

Scala中函数定义中的多个参数子句有什么意义?

我试图理解多个参数子句的这种语言特性以及为什么要使用它.例如,这两个功能之间的区别是什么?

class WTF {
    def TwoParamClauses(x : Int)(y: Int) = x + y
    def OneParamClause(x: Int, y : Int) = x + y
}

>> val underTest = new WTF
>> underTest.TwoParamClauses(1)(1) // result is '2'
>> underTest.OneParamClause(1,1) // result is '2' 
Run Code Online (Sandbox Code Playgroud)

在第4.6点Scala规范中有一些内容.看看这对你有意义.

注意:规范称这些'参数子句',但我认为有些人也可能称之为'参数列表'.

functional-programming scala currying

9
推荐指数
3
解决办法
942
查看次数

自制提取器和案例类提取器之间的区别

根据scala规范,由case类构建的提取器如下(scala规范§5.3.2):

def unapply[tps](x: c[tps]) =
  if (x eq null) scala.None
  else scala.Some(x.xs11, ..., x.xs1k)
Run Code Online (Sandbox Code Playgroud)

出于实现原因,我希望能够在非案例类上模仿此提取器的行为.但是,我的实现无法重现相同的行为.

以下是我的差异示例:

trait A

sealed trait B[X <: A]{ val x: X }

case class C[X <: A](x: X) extends B[X]

class D[X <: A](val x: X) extends B[X]

object D {
  def unapply[X <: A](d: D[X]): Option[X] =
    if (d eq None) None
    else Some(d.x)
}

def ext[X <: A](b: B[X]) = b match {
  case C(x) => Some(x)
  case D(x) => Some(x)
  case _ …
Run Code Online (Sandbox Code Playgroud)

scala case-class extractor

6
推荐指数
1
解决办法
522
查看次数

在Scala案例类树中更改节点

假设我使用case类构建了一些树,类似于:

abstract class Tree
case class Branch(b1:Tree,b2:Tree, value:Int) extends Tree
case class Leaf(value:Int) extends Tree
var tree = Branch(Branch(Leaf(1),Leaf(2),3),Branch(Leaf(4), Leaf(5),6))
Run Code Online (Sandbox Code Playgroud)

现在我想构建一个方法来将具有一些id的节点更改为另一个节点.很容易找到这个节点,但我不知道如何改变它.有没有简单的方法呢?

tree scala pattern-matching case-class

5
推荐指数
1
解决办法
1983
查看次数

WeakReference和Scala REPL

我想玩scala.ref.WeakReference.但是,在尝试实现大事之前,我想尝试检查scala控制台中的行为.我尝试了一些但我无法获得被取消引用的对象.这是我的尝试之一:

> class A
defined class A

> class B(var value: A)
defined class B

> new B(new A)
res0: B = B@c8aeb3

> new scala.ref.WeakReference(res0.value)
res1: scala.ref.WeakReference[A] = scala.ref.WeakReferenceWithWrapper@16a5d72

> res0.value = new A

> res1.get // Here I hope to get None
res3: Option[A] = Some(A@135707c)
Run Code Online (Sandbox Code Playgroud)

另一个尝试是由下面的oxbow_lakes给出的.

我也尝试过徒劳地显式运行垃圾收集器(调用java.lang.System.gc).

有没有办法取消引用的内容res1

console scala weak-references

4
推荐指数
1
解决办法
565
查看次数

通用类型定义为子类+接口

我需要将Generic类型定义为实现接口的子类,如下所示(DOES NOT COMPILE):

public class Foo<T extends SomeClass implements SomeInterface> {
    ...
}
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?

Jon Skeet,我们需要你的时候你在哪里;)

java generics interface

2
推荐指数
1
解决办法
676
查看次数