小编Mic*_*ael的帖子

Scala中的哪些类型类有用?

据我所知,在这篇博文 中,Scala中的"类型类"只是一个用特征和隐式适配器实现的"模式".

正如博客所说,如果我有特征A和适配器,B -> A那么我可以调用一个函数,它需要类型A的参数,参数类型B而不显式调用此适配器.

我发现它很好但不是特别有用.您能给出一个用例/示例,它显示了此功能的用途吗?

scala implicit

66
推荐指数
5
解决办法
2万
查看次数

如何修复JSlint报告的"foo未定义"错误?

可能重复:
JSLint:在定义之前使用过

我跑JSlint,看到这样的错误:

'foo' is not defined.
var x = foo();

foo是另一个JavaScript文件中定义的函数foo.js.据我所知,没有"import/require"指令JavaScript来引用foo另一个源文件中定义的函数.

如何修复此错误JSlint

javascript jslint

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

为什么foreach比获取Scala选项更好?

为什么使用foreach,map,flatMap等是不是用认为是更好的get斯卡拉选项?如果我使用isEmpty我可以get安全地打电话.

scala scala-option

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

为什么分隔的连续原语名为"shift"和"reset"?

我想(一般来说)我的理解shiftreset意思.但是我不明白他们为什么如此命名?什么shiftreset分隔继续原语与英语中的"移位"和"重置"单词有什么关系?

continuations scala delimited-continuations

32
推荐指数
2
解决办法
1595
查看次数

逆变的例子

我正在考虑以下示例来说明为什么逆变是有用的.

让我们考虑一个GUI框架Widgets,EventsEvent Listeners.

abstract class Event;
class KeyEvent extends Event
class MouseEvent extends Event

trait EventListener[-E] { def listen(e:E) }
Run Code Online (Sandbox Code Playgroud)

我们Widgets定义以下方法:

def addKeyEventListener(listener:EventListener[KeyEvent])
def addMouseEventListener(listener:EventListener[MouseEvent])
Run Code Online (Sandbox Code Playgroud)

这些方法只接受"特定"事件监听器,这很好.但是我想定义"kitchen-sink"监听器,它们监听所有事件,并将这些监听器传递给上面的"添加监听器"方法.

例如,我想定义LogEventListener记录所有传入的事件

class LogEventListener extends EventListener[Event] {
   def listen(e:Event) { log(event) }
}
Run Code Online (Sandbox Code Playgroud)

由于特征EventListener逆变的,Event我们可以传递LogEventListener给所有那些"添加监听器"方法而不会失去其类型安全性.

是否有意义 ?

scala contravariance

29
推荐指数
2
解决办法
2028
查看次数

如何使用AOP和AspectJ进行日志记录?

我想在我的所有公共方法中添加"trace"消息,如下所示:

public void foo(s:String, n:int) { // log is a log4j logger or any other library
  log.trace(String.format("Enter foo with s: %s, n: %d", s, n))
  ...
  log.trace("Exit foo") 
}

现在我想log.trace用AOP(和字节码检测)自动将所有这些添加到我的方法中.我在考虑AspectJ.是否有意义?你知道任何开放源代码吗?

java logging aop aspectj

27
推荐指数
2
解决办法
4万
查看次数

如何从Scala中的元组列表构建多图?

假设我有一个元组列表List[(A, B)].将其转换为multimap映射A到的a的最佳方法是什么Set[B]?我可以构建一个不可变的 multimap吗?

scala multimap

23
推荐指数
2
解决办法
8467
查看次数

BST的第二个最大值

这是一个面试问题.在BST中找到第二个最大值.

最大元素是BST中最右边的叶子.第二个最大值是其父或其左子.因此解决方案是遍历BST以找到最右边的叶子并检查其父和左子.

是否有意义?

language-agnostic algorithm binary-search-tree data-structures

19
推荐指数
5
解决办法
2万
查看次数

为什么git命令切换名为"git checkout"的分支?

为什么git命令要切换名为git checkout?的分支?
它真的有意义吗?

我会改名git switch.此外,git checkout还有其他含义:例如还原文件(如svn revert)

git git-checkout

18
推荐指数
4
解决办法
2万
查看次数

用于枚举Scala中的排列的代码

我编写了一个函数来枚举给定列表的所有排列.您如何看待下面的代码?

def interleave(x:Int, l:List[Int]):List[List[Int]] = {
  l match { 
    case Nil => List(List(x))
    case (head::tail) =>
      (x :: head :: tail) :: interleave(x, tail).map(head :: _)
  }
}

def permutations(l:List[Int]):List[List[Int]] = {
  l match {
    case Nil => List(List())
    case (head::tail) =>
      for(p0 <- permutations(tail); p1 <- interleave(head, p0)) yield p1
  }
}
Run Code Online (Sandbox Code Playgroud)

scala permutation

17
推荐指数
5
解决办法
3万
查看次数