小编Sti*_*set的帖子

观察NSMutableDictionary更改

是否可以观察(订阅)对NSMutableDictionary中不同键下存储的值的更改?在我的情况下,启动订阅时密钥已经存在,但值会更改,我希望在这种情况下得到通知.我想要通知中更改值的键.

我假设如果我的字典键都是NSString实例,我可以单独订阅每个键路径.但是,如果我的键是非字符串怎么办?那个案子我运气不好吗?

objective-c nsmutabledictionary

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

驯服Scala类型系统

我似乎不理解Scala类型系统.我正在尝试实现两个基本特征和一系列算法的特性来使用它们.我在下面做错了什么?

移动和状态的基本特征; 这些被简化为仅包括暴露问题的方法.

trait Move
trait State[M <: Move] {
    def moves: List[M]
    def successor(m: M): State[M]
}
Run Code Online (Sandbox Code Playgroud)

这是使用上述算法系列的特性.我不确定这是对的!可能会涉及一些+ M/-S的东西......

trait Algorithm {
    def bestMove[M <: Move, S <: State[M]](s: S): M
}
Run Code Online (Sandbox Code Playgroud)

具体举动和状态:

case class MyMove(x: Int) extends Move
class MyState(val s: Map[MyMove,Int]) extends State[MyMove] {
    def moves = MyMove(1) :: MyMove(2) :: Nil
    def successor(p: MyMove) = new MyState(s.updated(p, 1))
}
Run Code Online (Sandbox Code Playgroud)

我对下面的内容非常不满意,但编译器似乎接受了它...试图对算法特性进行具体实现.

object MyAlgorithm extends Algorithm {
    def bestMove(s: State[Move]) = s.moves.head
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,没有编译错误; 当我尝试将所有部件放在一起时,它们会出现:

object Main extends …
Run Code Online (Sandbox Code Playgroud)

types scala

16
推荐指数
2
解决办法
729
查看次数

git log foo..bar - 如何查看*合并日期*的变更集?

是否有可能让'git log'给出变更集落在分支上的日期而不是创建变更集的日期?'git log --graph'(下面的示例截断输出)给了我很多我想要的东西,但它仍然会打印创建单个变更集的日期,而不是它们合并到此分支中的日期.

*   commit 7e8d68fc58b915cc17bca41be833c4f7a062cd3c
|\  Merge: 1b4f10d af0dcdd
| | Date:   Wed Apr 25 17:40:16 2012 +0100
| |     Merge branch 'foo'
| * commit af0dcdd078197a852fcfad11c5111aa11579aa05
| | Date:   Wed Apr 25 17:36:50 2012 +0100
| |     t2: adding lorem ipsum again
| * commit 569f5de0eb40cbf198771812f9b099cf71b5b056
| | Date:   Wed Apr 25 17:36:36 2012 +0100
| |     t1: adding lorem ipsum
* | commit 1b4f10d3eea7c9c6304f7b1fd41818b932e4dad0
| | Date:   Wed Apr 25 17:38:24 2012 +0100
| …
Run Code Online (Sandbox Code Playgroud)

git

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

如何找到任意日期的最近工作日?

有没有一种优雅的方法可以使用JodaTime查找给定日期的星期几?我最初以为setCopy()会是这样,但这会把这一天设定为同一周的特定日期.因此,如果ld2011-11-27day是"星期一",则以下函数返回2011-11-21,而不是2011-11-28我想要的.

    // Note that "day" can be _any_ day of the week, not just weekdays.
    LocalDate getNearestDayOfWeek(LocalDate ld, String day) {
        return ld.dayOfWeek().setCopy(day);
    }
Run Code Online (Sandbox Code Playgroud)

各种输入的所需输出:

2011-12-04, Monday    => 2011-12-05
2011-12-04, Tuesday   => 2011-12-06
2011-12-04, Wednesday => 2011-12-07
2011-12-04, Thursday  => 2011-12-01
2011-12-04, Friday    => 2011-12-02
2011-12-04, Saturday  => 2011-12-03
2011-12-04, Sunday    => 2011-12-04

2011-12-05, Monday    => 2011-12-05
2011-12-05, Tuesday   => 2011-12-06
2011-12-05, Wednesday => 2011-12-07
2011-12-05, …
Run Code Online (Sandbox Code Playgroud)

java jodatime

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

如何为新的主要库版本创建规范?

我最近发布了SBJson的第4版.这是一个向后兼容的新主要版本.由于SBJson被其他流行的库广泛捆绑,我重命名了所有的类和枚举,以确保它可以与以前的版本一起使用.

但是,我不确定如何使用CocoaPods来最好地处理这种情况.我为现有的SBJson规范贡献了4.0.0规范,但我怀疑在同一个项目中安装3.2和4.0.0是不可能的.我是否必须将4.0.0规范克隆到SBJson4(注意名称中的额外主要版本号)规范中?

cocoapods

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

确保"重新启动"任务在它之前自动运行:test

re-start在运行IntegrationTest目标(it:test)之前,是否可以让(又名reStart)任务自动运行?

我以为这样做会:

test <<= (test in IntegrationTest) dependsOn reStart
Run Code Online (Sandbox Code Playgroud)

但是,我收到此错误:

build.sbt:54: error: not found: value reStart
test <<= (test in IntegrationTest) dependsOn reStart
                                             ^
[error] Type error in expression
Run Code Online (Sandbox Code Playgroud)

通过添加import Revolver._我得到了一点,但它仍然失败.现在我得到了一个更具描述性的错误:

build.sbt:55: error: type mismatch;
 found   : sbt.InputKey[spray.revolver.AppProcess]
 required: sbt.Scoped.AnyInitTask
    (which expands to)  sbt.Def.Initialize[sbt.Task[T]] forSome { type T }
test in IntegrationTest <<= (test in IntegrationTest) dependsOn reStart
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题?

scala sbt

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

如何从 org-babel shell 输出生成带有列标题的表?

我正在尝试为此添加标题:

#+BEGIN_SRC sh :dir ~ :results table
  for n in 1 2 3 4; do
      echo $n $(($n * $n))
  done
#+END_SRC
Run Code Online (Sandbox Code Playgroud)

结果是:

#+RESULTS:
| 1 |  1 |
| 2 |  4 |
| 3 |  9 |
| 4 | 16 |
Run Code Online (Sandbox Code Playgroud)

我想要的输出是:

#+RESULTS:
| N | N*N |
|---+-----|
| 1 |   1 |
| 2 |   4 |
| 3 |   9 |
| 4 |  16 |
Run Code Online (Sandbox Code Playgroud)

我遇到的困难是注入第二行。这不起作用:

#+BEGIN_SRC sh :dir ~ :results table
  echo …
Run Code Online (Sandbox Code Playgroud)

org-babel

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