小编njl*_*son的帖子

是否需要FileChannel.force和FileDescriptor.sync?

/sf/ask/51136501/中,作者在答案摘要中写道:

对于Java NIO,使用c.force(true),然后使用s.getFD().sync()

我的问题是:你真的需要两者吗?力不够吗?是不是强制和同步只是不同的接口做同样的事情?我找不到任何确认的地方.

java io storage nio

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

无效功能的Scala语法?

在Scala中是否有一些标准方法来指定一个什么都不做的函数,例如在实现特征时?这有效:

trait Doer {
  def doit
}

val nothingDoer = new Doer {
  def doit = { }
}
Run Code Online (Sandbox Code Playgroud)

但也许还有一些更合适的方式来制定什么呢?

编辑出现了一些有趣的答案,我在回答中添加了一些问题.首先,事实证明我可以在Doer中使用默认实现.好的提示,但你并不总是那么想.其次,显然更惯用的写作方式是:

val nothingDoer = new Doer {
  def doit { }
}
Run Code Online (Sandbox Code Playgroud)

第三,尽管没有人提出这一点,但我发现这似乎也有效:

val nothingDoer = new Doer {
  def doit = Unit
}
Run Code Online (Sandbox Code Playgroud)

这是一个很好的选择吗?

(我认为,少数人建议的":单位"并没有真正添加任何内容.)

scala

8
推荐指数
1
解决办法
8432
查看次数

用于空类参数列表的Scala样式

在创建没有类参数的对象时,我很难决定是否应该包含空括号.一个具体的例子:我正在与现有的Java代码连接,并创建一个实现名为EventResponder的接口的对象.我应该写:

val service = new EventResponder() {
  def respond(message: String): String = {
    return ""
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

val service = new EventResponder {
  def respond(message: String): String = {
    return ""
  }
}
Run Code Online (Sandbox Code Playgroud)

(或者,顺便说一句,还有什么我应该改变的吗?)

两者似乎都有效,据我所知,Scala风格指南对此没有任何建议.它讨论了何时为方法或arity-0包含空括号,但这种情况并不完全相同.

coding-style scala

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

什么导致`MSt`(meta + shift + t)键绑定不采取?

默认情况下,C-S-t并且M-S-t都在我的Emacs绑定。因此,当我按下它们时,它们被翻译成C-tM-t。很好,但我想用它们对原始函数进行调整,因此将这些行放在我的.emacs

(global-set-key (kbd "C-S-t") 'transpose-chars-backward)
(global-set-key (kbd "M-S-t") 'transpose-words-backward)
Run Code Online (Sandbox Code Playgroud)

那里的功能是我自己的,当通过M-x.

这适用于C-S-t,但不适用于M-S-t仍然被转换为M-t. 上的消息C-h k M-S-t证实了这一点。

并不是说M-S-一般配置组合是不可能的,因为M-qM-S-q做不同的事情。

是什么导致了这种不一致,我该如何解决?

我在 Mac OS X 10.9.5 上运行 Aquamacs。

emacs aquamacs key-bindings

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

枚举不是从 1

当我有一个像这样的枚举序列时:

   57. y = alloc(30)
   58. z = alloc(40)
   59. t = alloc(25)
Run Code Online (Sandbox Code Playgroud)

org-mode 一直将数字设置为 1、2、3,除非我非常小心并且不碰任何“电子”键。有什么办法可以防止这种情况发生,告诉 org-mode 我真的希望这个枚举从 57 开始?

org-mode

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

为什么dialyzer发现我的类型规范无效?

我是透析器的新手,我希望通过回答这个问题,有人可以快速了解它的操作.

我认为,给定数字X和非负整数N的下列函数将产生一个数字.(X到N次幂.)

-spec pow(X :: number(), N :: non_neg_integer) -> number().
pow(X, N) ->
    pow(X, N, 1).
pow(_X, 0, R) ->
    R;
pow(X, N, R) ->
    pow(X*X,
        N bsr 1,
        if
            N band 1 =:= 0 ->
                R;
            true ->
                X*R
        end).
Run Code Online (Sandbox Code Playgroud)

但透析器不喜欢我的规格.它告诉我:

Invalid type specification for function t:pow/2.
The success typing is (_,integer()) -> any()
Run Code Online (Sandbox Code Playgroud)

它在我看来是一个过于包容的规范.有人可以解释为什么会这样做,以及是否有任何方法可以接受更严格的类型规范?

erlang type-systems dialyzer

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

Erlang中重复元素的列表

我找不到一种方法来使用Erlang库函数来创建一个由重复N次的元素E组成的列表.当然,写一个很简单,

repeat(E, N) ->
    repeat(E, N, []).
repeat(_E, 0, L) ->
    L;
repeat(E, N, L) ->
    repeat(E, N-1, [E|L]).
Run Code Online (Sandbox Code Playgroud)

但我希望这是一个单行使用一些列表模块功能或其他东西.有办法吗?

编辑:好的,这当然是,

lists:map(fun(_) -> E end, lists:seq(1, N))
Run Code Online (Sandbox Code Playgroud)

但这会创建一个立即丢弃的额外列表.对我来说似乎效率低下,但也许我并不认为Erlang是惯用的.

编辑2:原来这是一个愚蠢的问题.我只是在某种程度上没有看到列表模块中的重复功能.

erlang list

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