小编Rog*_*ach的帖子

特征上可变数量的类型

我正在创建一个简单的缓存特征(轻松缓存我的函数):

trait Cache[A,B] {
  def _calc(v:A):B
  private var cache = Map[A,B]()
  def calc(v:A):B = {
    cache.get(v) match {
      case Some(x) => x
      case None => 
        val x = _calc(v)
        cache += (v -> x)
        x
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

object Sol extends Cache[Int,Int] {
  def _calc(v:Int):Int = { /* do something here */ }
}
Sol.calc(5)
Run Code Online (Sandbox Code Playgroud)

它工作正常,但问题出现在我需要缓存具有更多参数的函数时 - 所以我需要开发特征Cache2,Cache3,来自第一个特征的所有复制粘贴代码.

可能的解决方法是将具有多个参数的函数转换为接受元组的函数,但这似乎不正确.

有没有办法更普遍地做到并避免干扰原则违规?

scala

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

有没有办法通过sbt插件获取项目的所有依赖项?

我想写一个sbt插件,在其中我需要获取当前项目的所有依赖项的列表(有一些信息,是可能的).可能吗?

scala sbt

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

如何告诉bash不要扩展$ _变量?

我想使用一些perl行,如下所示:

perl -pe "$_=~s///e"
Run Code Online (Sandbox Code Playgroud)

问题是,bash不断扩展"$ _"变量.我可以将perl表达式放入单引号中,但这会阻止我在脚本中添加一些变量.

有没有办法阻止bash扩展"$ _"变量?

bash perl

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

有没有办法从 Scala 程序中获取终端大小?

我听说没有纯粹的跨平台解决方案。但是也许对于最常用的平台(Linux、Mac、Win)有三种独立的解决方案,可以将它们组合起来以在大多数情况下获得所需的价值?

这需要包含在库中,因此我无法添加某种预启动脚本来获取宽度。

scala

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

哪个shell ruby​​用作子shell?

如果我做

`echo $SHELL`
Run Code Online (Sandbox Code Playgroud)

,我得到/bin/bash.

但是,如果我尝试运行此循环:

`for x in {1..20}; do echo $x; done`
Run Code Online (Sandbox Code Playgroud)

我得到的{1..20}不是预期的20个数字.

也许ruby使用其他一些shell来运行这些命令?我该如何解决这个问题?

编辑:软件版本:

$ irb --version
irb 0.9.5(05/04/13)
$ ruby --version
ruby 1.8.7 (2010-06-23 patchlevel 299) [x86_64-linux]
$ bash --version
GNU bash, version 4.1.5(1)-release (x86_64-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

ruby

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

有没有办法在没有 JFrame 的情况下获取键盘事件?

我想让我的程序在用户按下某个快捷方式时取消隐藏主窗口。有没有办法获取全局关键事件,而不仅仅是焦点在应用程序框架内时发生的事件?

java keyboard swing event-listener keyboard-events

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

有没有办法告诉JVM在处理之前优化我的代码?

我有一个方法,第一次执行需要很长时间.但经过几次调用后,时间缩短了大约30倍.因此,为了使我的应用程序更快地响应用户交互,我使用一些关于应用程序初始化的示例数据"预热"此方法(5次).但这会增加应用启动时间.
我读过,JVM可以优化并编译我的java代码到本机,从而加快速度.我想知道 - 也许有一些方法可以明确告诉JVM我希望在启动应用程序时编译这个方法?

java optimization jvm

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

在val初始化时捕获MatchError并使用Scala中的模式匹配?

MatchError在使用模式匹配赋值时,捕获a的最佳方法(最简洁,最清晰,最惯用)是什么?

例:

val a :: b :: Nil = List(1,2,3) // throws scala.MatchError
Run Code Online (Sandbox Code Playgroud)

到目前为止我找到的最佳方式:

val a :: b :: Nil = try {
    val a1 :: b1 :: Nil = List(1,2,3)
    List(a1, b1)
  catch { case e:MatchError => // handle error here }
Run Code Online (Sandbox Code Playgroud)

这是否有惯用的方法?

scala

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

如何在大按钮内对齐图标和文字?

我有一个很大的按钮(minWidthminHeight明确设置为大数字),在那个大按钮内有一个相对较小的图标和一些文本.图标和文本不会消耗所有可用空间,最终会被放置在按钮的中心.

我想将图标和文字放在按钮的左侧.但似乎我不明白所有这些路线的意思是,因为设置alignmentBASELINE_LEFT或设置textAlignmentLEFT没有改变任何东西.

我该如何解决?

javafx-2

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

如何获取字体的行高,就像在 JTextArea 中一样?

我需要获取从一行的基线到下一个文本行的基线的距离,与 JTextArea 中的布局相同。为此,我只有指定字体大小的字体。

我的问题是,在字体上,我只能获取 LineMetrics 或 FontMetrics,并且它们都有不同大小的线条(getAscent/getHeight/getDescent),具体取决于当前文本 - 例如,如果有 letter ,则上升f更大,并且如果有g,我就有血统。

有没有办法获得“全局”字体高度属性?所以我将能够在 Graphics2D 上正确绘制文本。

java fonts swing jtextarea fontmetrics

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