小编J. *_*ini的帖子

接口内静态字段的惯用用例是什么?

我在这个网站上搜索了任何标记为 内容,发现这个主题很少出现。其他网站上的例子也同样不令人满意,我自己还没有想出任何办法。因此,我发现很难想到包含静态字段的接口的用例。

是否有任何设计模式或任何其他习惯用法建议在接口内部使用静态字段?

c# static design-patterns field interface

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

我怎样才能让 R 的输出更详细,以便让我放心它还没有坏?

我经常运行占用大量 RAM 的代码,并且可能需要长达一个小时才能提供输出。通常,我会花半个小时来运行这样的代码,而且我会担心会出现问题。有什么办法可以让 R 向我保证还没有任何错误?我想我可以将里程碑放在代码本身中,但我想知道 R(或 RStudio)中是否有任何东西可以在运行时自动完成这项工作。例如,查看代码使用了多少内存会很方便,因为只要我看到内存使用量显着变化,我就会放心它仍在工作。

memory r verbosity

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

Clojure 是不是比其他 lisps 不那么同质化?

我记得在Clojure for Lisp Programmers 视频中重复的一个说法是,早期 Lisp,尤其是 Common Lisp 的一个很大的弱点是太多地与 Lisp 的列表结构相结合,尤其是cons单元格。您可以在链接视频的 25 分钟标记处找到此声明的一次出现,但我确信我记得在该系列的其他地方听到过它。重要的是,在视频的同一点,我们看到了这张幻灯片,向我们展示了 Clojure 有许多其他数据结构,而不仅仅是老派的 Lispy 列表: 在此处输入图片说明 这让我很困扰。我对 Lisp 的了解非常有限,但我一直被告知,其传奇的元可编程性的一个关键要素是一切 - 是的,一切 - 都是一个列表,这是防止我们在尝试时遇到的那种错误的原因元程序其他语言。这是否意味着通过添加新的一流数据结构,Clojure 降低了其同象性,从而使其比其他 Lisp(例如 Common Lisp)更难元编程?

lisp metaprogramming clojure common-lisp homoiconicity

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

R 的 switch 语句不是一种特殊形式,所以它很慢吗?

在大多数带有switch语句的语言中,它switch是一种特殊的形式,旨在延迟评估可能性,并且编译器知道如何根据给定的输入优化语句的选择。R,大多已经很懒了,不需要其中的一些。然而,R 的switch语句仍然是一个函数调用,而不是任何一种特殊的形式。这是否意味着 R 的switch语句比它是一种特殊形式时要慢?或者 R 的解释器是否知道优化它,好像它是一种特殊形式?

performance r switch-statement

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

R 有没有办法说“做 n 次”而不必编写带有冗余变量的 for 循环?

我最近写了这行代码:for(i in seq_len(exponent)){out<-squareMat%*%out}. 显然,i从来没有用过,我只是想说“exponent次,做out<-squareMat%*%out”。没有多余的计数器,有没有办法做到这一点i?例如,是否有一个apply家庭功能?

示例 - 我有:

squareMat<-matrix(c(0,10,20,30),2,2)
out<-diag(nrow = nrow(squareMat))
exponent<-5
for(i in seq_len(exponent)){out<-squareMat%*%out}
out
Run Code Online (Sandbox Code Playgroud)

我想要的是:

squareMat<-matrix(c(0,10,20,30),2,2)
out<-diag(nrow = nrow(squareMat))
exponent<-5
[do exponent times]{out<-squareMat%*%out}
out
Run Code Online (Sandbox Code Playgroud)

for-loop r apply control-flow

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

应用系列功能的范围如何?

考虑:

x <- 5
replicate(10, x <- x + 1)
Run Code Online (Sandbox Code Playgroud)

这有输出c(6, 6, 6, 6, 6, 6, 6, 6, 6, 6)。然而:

x <- 5
replicate(10, x <<- x + 1)
Run Code Online (Sandbox Code Playgroud)

有输出c(6, 7, 8, 9, 10, 11, 12, 13, 14, 15)

这对x <- x + 1被评估的环境意味着什么?我是否相信它x被视为内部变量replicate?这似乎是我所看到的,但是当我查阅语言定义的相关部分时,我看到了以下内容:

还值得注意的是,如果参数被求值,foo(x <- y) 的效果是在调用环境中而不是在 foo 的求值环境中更改 x 的值。

但如果x真的是在调用环境中改变了,那为什么会:

x <- 5
replicate(10, x <- x + 1)
x
Run Code Online (Sandbox Code Playgroud)

返回5与否 …

scope r apply replicate

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

值元组存在,那么为什么要使用“out”参数修饰符呢?

微软关于参数out修饰符的文档指出了以下内容:

使用参数声明方法out是返回多个值的经典解决方法。考虑类似场景的值元组。

我觉得这是一个非常好的观点。out既然我们有了值元组,还剩下什么用例呢?

c# out valuetuple

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

Common Lisp 中的类型在什么意义上是一流的?

Peter Norvig 曾说过,许多 OOP 设计模式在 Lisp 中都是微不足道或多余的。这里的幻灯片 #10声称一流类型取代了其中的许多类型。

在什么意义上,Common Lisp 中的类型是一流的?作为参考,《计算机程序的结构和解释》给出了以下编程语言元素必须满足的条件才能被视为一流:

  1. 它们可以通过变量命名。

  2. 它们可以作为参数传递给过程。

  3. 它们可以作为程序的结果返回。

  4. 它们可能包含在数据结构中

证明 Common Lisp 中的类型满足上述条件将是一个很好的答案。

types common-lisp first-class

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

除了风格之外,还有什么理由更喜欢简单的“CASE WHEN”而不是搜索呢?

我想写以下内容

CASE [FOO]
WHEN 1 THEN 'YES'
WHEN 0 THEN 'NO'
WHEN NULL THEN 'NO'
END
Run Code Online (Sandbox Code Playgroud)

我当然可以写

CASE
WHEN [FOO] = 1 THEN 'YES'
WHEN [FOO] = 0 OR FOO IS NULL THEN 'NO'
END
Run Code Online (Sandbox Code Playgroud)

反而。

除了风格之外,是否有任何理由(例如性能)更喜欢其中一种?

sql t-sql sql-server case

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

YEAR 函数仍然不可SARGable 吗?

在一本关于 SQL Server 2014 的书中,建议我避免

SELECT orderid, orderdate, filler
FROM dbo.Orders
WHERE YEAR(orderdate) = 2014;
Run Code Online (Sandbox Code Playgroud)

并且更喜欢

SELECT orderid, orderdate, filler
FROM dbo.Orders
WHERE orderdate >= '20140101'
AND orderdate < '20150101';
Run Code Online (Sandbox Code Playgroud)

当存在聚集索引时,orderdate因为使用YEAR会使查询不可SARGable。

自 SQL Server 2014 以来,这种情况有变化吗?如果是这样,它是在哪个版本中更改的?

sql t-sql sql-server optimization date

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