相关疑难解决方法(0)

Scala中隐式函数转换与隐式类之间的区别

对于Scala中的隐式转换,我可以使用隐式转换函数

implicit def intToX(i:Int):X = new X(i)

1.myMethod // -1
Run Code Online (Sandbox Code Playgroud)

或隐含的类

implicit class X(i: Int) {
    def myMethod = - i
}

1.myMethod // -1
Run Code Online (Sandbox Code Playgroud)

这两者有什么区别吗?我什么时候应该更喜欢一个?

关于隐式转换与类型类有一个相关的问题,但它只比较隐式函数类型类.我感兴趣的是与隐式类的区别.

scala implicit-conversion

7
推荐指数
1
解决办法
1710
查看次数

如何有效地转置2D位矩阵

我一直在为这个问题绊绊(例如在这个问题中)。以原始整数类型数组(例如的数组)的形式给定2D位矩阵/板/数组long。为简单起见,我们可以假设一个方阵,例如,long在具有64位的平台上,由64个值组成的数组long

让我们x[i]0 <= i < 64是输入数组。计算数组y[i]0 <= i <= 64使:

(x[i] >> j) & 1 == (y[j] >> i) & 1
Run Code Online (Sandbox Code Playgroud)

x >> ixby i位的按位右移,&是和,x[i]iarray 中第th个位置的值x

如何实现最有效地将数组映射x到数组的功能y

我主要是在寻找非破坏性的方法,这些方法会使输入数组x保持完整。

实施语言

使用的编程语言应具有整数类型的数组和按位运算。许多语言都满足这些要求。C / C ++和Java解决方案看起来非常相似,所以让我们选择这些语言。

c java arrays performance bit-manipulation

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

隐式转换,它将属性添加到类型,而不是类型的实例

我正在阅读一些较旧的Scala帖子以更好地理解类型类,我遇到了一个似乎非常有用的,但这个例子似乎已经过时了.

有人可以帮我找出正确的方法来做Phillipe的意图吗?这是代码

trait Default[T] { def value : T }

implicit object DefaultInt extends Default[Int] {
  def value = 42
}

implicit def listsHaveDefault[T : Default] = new Default[List[T]] {
  def value = implicitly[Default[T]].value :: Nil
}

default[List[List[Int]]]
Run Code Online (Sandbox Code Playgroud)

复制/粘贴并在REPL中运行时,我得到这个>

    scala> default[List[List[Int]]]
    <console>:18: error: not found: value default
                  default[List[List[Int]]]
                  ^
Run Code Online (Sandbox Code Playgroud)

scala implicit typeclass

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