小编Dao*_*Wen的帖子

在两年结束时,github学生帐户的存储库会发生什么?

我刚刚使用我的大学电子邮件地址升级到免费的github微计划.我打算在本学期使用私有存储库进行一些类项目,但我想知道在我的免费学生升级到期后2年结束时这些存储库会发生什么.我假设当你从微账户降级到免费账户时会发生同样的事情.

我的存储库会消失,变成公共,还是变成只读?我搜索了一下,但未能找到答案.

github

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

在2.10中替代Scala REPL breakIf

我在这里阅读有关breakIf在REPL代码中使用该方法进行交互式调试的信息,但后来我发现这篇帖子break并在Scala 2.10 breakIf中删除了ILoop.不幸的是,该帖子并未解释为何删除了代码.

我假设删除了这些函数,因为有更好的方法可以做到这一点.如果是这样的话,有人可以赐教我吗?

scala scala-2.10

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

为什么这个连接宏需要一个间接级别?

我找到了一篇有趣的小博文,解释了如何使用行号在宏中生成(半)唯一名称:

// Do magic! Creates a unique name using the line number
#define LINE_NAME( prefix ) JOIN( prefix, __LINE__ )
#define JOIN( symbol1, symbol2 ) _DO_JOIN( symbol1, symbol2 )
#define _DO_JOIN( symbol1, symbol2 ) symbol1##symbol2
Run Code Online (Sandbox Code Playgroud)

这里有两件事让我很困惑:

  1. 为什么LINE_NAMEJOIN在文件中声明之后才会工作?我认为C预处理器执行了线性传递,因此需要根据依赖性来定义宏,就像C函数在使用之前需要定义一样.
  2. 为什么有必要同时使用JOIN_DO_JOIN宏来获得正确的结果?在宏中具有这种间接级别似乎很奇怪.

我有一种感觉,这两个问题的答案是相关的,并且与C预处理器评估宏的方式有关.(但是,由于我甚至认为这个例子无效,我对宏如何工作的直觉显然已经过时了.)

c macros concat

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

为什么绑定会影响我的地图类型?

我在REPL中玩耍,我有一些奇怪的行为:

Clojure 1.4.0
user=> (type {:a 1})
clojure.lang.PersistentArrayMap
user=> (def x {:a 1})
#'user/x
user=> (type x)
clojure.lang.PersistentHashMap
Run Code Online (Sandbox Code Playgroud)

我认为所有小的文字地图都是实例PersistentArrayMap,但显然情况并非如此def.为什么要使用defClojure为我的litte地图选择不同的表示?我知道这可能只是一些奇怪的实现细节,但我很好奇.

language-implementation clojure map

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

ANTLR 4何时需要EOF?

ANTLRWorks2中的TestDriver似乎有点挑剔,它什么时候会接受没有和明确的语法EOF,什么时候不接受.ANTLR4入门指南中的Hello语法不会在任何地方使用,因此我推断如果可能的话,最好避免显式.EOFEOF

使用的最佳做法是EOF什么?你什么时候需要它?

antlr antlrworks

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

理解罗盘的布局算法

我想要想象一个代表一些地理地图的图表.因此,我的图形的边缘与罗盘(北,南,东,西)相关联.图表本身是定向的,可以是非循环的.

例如,我有节点:House-1,House-2,House-3有边[House-1,north-of,House-2],[House-2,east-of,House-3].

我正在寻找一种可以理解罗盘的布局算法(也许作为提示?)

我已经通过JUNG,JGraph,GraphViz,似乎没有人做我想要的但我可能错过了一些东西.

有什么建议?

java visualization graph clojure graphviz

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

我为什么要重新实现懒惰?

我在Twitter的Effective Scala页面上阅读了关于Lazyness [原文如此] 的部分,其中包含了这个建议(重点是我的):

为此目的使用延迟字段[按需计算和缓存值],但在语义需要延迟时避免使用延迟.在这些情况下,最好是明确的,因为它使成本模型明确,并且可以更精确地控制副作用.

我不明白为什么他们会提出这个主张.为什么lazy在语义需要懒惰的情况下避免使用关键字会更好(这意味着它对于程序中的正确性是必要的,而不是仅仅将其用作优化).我没有看到如何编写自己的懒惰初始化代码会使得懒惰比使用lazy语言中内置的关键字更清晰!我知道有一些额外的开销涉及使lazy字段线程安全,但我不认为这是他们在这里得到的...

关于使用lazy我完全缺失的指南是否有一些隐藏的优点,或者我最好忽略这个建议?

scala lazy-initialization

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

Clojure重载了Longs的方法解析

这种行为对我没有意义:

user=> (type 1)
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (type 1)
java.lang.Long
user=> (type (Long. 1))
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (BigDecimal. 1)
1M
user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:22) 
user=> (BigDecimal. (cast Long 1))
1M
Run Code Online (Sandbox Code Playgroud)

为什么这个(BigDecimal. (Long. 1))案例无法找到明确的匹配方法签名,而另外两个表达式 - 具有完全相同的参数类型 - 成功?


更新:

我发现这种行为奇怪的是它似乎特别适用于这种Long类型:

user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:1) 
user=> …
Run Code Online (Sandbox Code Playgroud)

types clojure

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

不确定我的任务在哪里

今天我遇到了一些问题,分配给var存储在地图中的案例类实例中的字段.这是repl演示问题的简单会话:

scala> case class X(var x: Int)
defined class X

scala> val m = Map('x -> X(1))
m: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1))

scala> m
res0: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1))

scala> m('x).x = 7

scala> m
res1: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(1))

scala> val x = m('x)
x: X = X(1)

scala> x.x = 7
x.x: Int = 7

scala> x
res2: X = X(7)

scala> m
res3: scala.collection.immutable.Map[Symbol,X] = Map('x -> X(7))

scala> m('x).x_=(8)

scala> m …
Run Code Online (Sandbox Code Playgroud)

scala

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

Java 7/8泛型中嵌套通配符的可赋值性差异

以下在JDK8中编译得很好,但是与JDK7 给出了不兼容的类型错误.

List<List<? extends Number>> xs = Arrays.asList(Arrays.asList(0));
Run Code Online (Sandbox Code Playgroud)

根据这个答案,List<List<? extends Number>>没有超类型的关系List<List<Integer>>.

在Java 8中改变了什么使得这个任务有效?我也有一个很难理解为什么它不会在Java 7的工作.


这两个语句使用JDK7编译时没有类型错误:

List<? extends Number> xs = Arrays.asList(0);
List<? extends List<? extends Number>> ys = Arrays.asList(Arrays.asList(0));
Run Code Online (Sandbox Code Playgroud)

对我来说,这两个都在JDK7中工作似乎非常不直观,但上面的原始示例却没有.所有这些当然都适用于JDK8.我想要真正理解这里发生了什么,我需要理解为什么这些例子在Java 7中是合法的,但原始的例子却不是.

java generics java-8 bounded-wildcard

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