没有明确说明条件的“如果(假)”

Posted

技术标签:

【中文标题】没有明确说明条件的“如果(假)”【英文标题】:"If (FALSE)" with no condition explicitly stated 【发布时间】:2020-12-22 22:14:30 【问题描述】:

我从显然喜欢使用以下语法的人那里收到了一些代码:

if(FALSE) 
    opt <- list("cores" = 1, "degradation" = TRUE, "test" = TRUE)

这是什么意思?如果FALSE 是什么?评估的最后一个条件?我很困惑

【问题讨论】:

这可能是一个无需使用#就可以注释掉整段代码的技巧,当你有很多行时非常实用,这里不是这种情况。 @Waldi,请作为答案发布。 (以这种方式注释掉代码部分的一个优点是它仍然会像常规代码一样突出显示语法;这也可能是一个缺点,因为它使作为注释块更难区分。) 【参考方案1】:

这是一种可用的技术to comment out multiple lines of code。

优点:

你不需要为每一行都使用# 正如@Ben Bolker 所指出的,代码语法突出显示仍然处于活动状态,因此您知道可以随时使用if (T) 而不是if (F) 将其打开

缺点:

您没有像 # 注释掉的内容那样清楚地看到

【讨论】:

【参考方案2】:

如果FALSE是什么?

FALSE 本身。 FALSE 是一个逻辑值。 if 的语法是

if (condition) …

“条件”可以是任何表达式,其计算结果为 R 可以解释为逻辑值的东西。 FALSE 就是这样一种表达方式。所以if (FALSE)和写if (a condition that’s never true)基本一样。

所以这个结构是毫无意义的:整个if 块总是会被跳过,你最好把它删除。正如另一个答案中所解释的,有些人使用此构造来轻松禁用更大的代码块。我不推荐这种做法:从未评估过的代码称为dead code,它很混乱,因此会导致technical debt(所有这些实际上都是说它会降低整体代码质量的术语)。

【讨论】:

以上是关于没有明确说明条件的“如果(假)”的主要内容,如果未能解决你的问题,请参考以下文章

Sql - WHERE 条件的显式顺序?

JMH使用说明

关于Linq中FirstFirstOrDefault;SingleSingleOrDefault等方法的说明

为啥 MPI_SEND 在我的 for 循环中不起作用?如果明确说明它工作正常

设计(参考阿里巴巴Java开发手册)

PAL 安装报错及必备条件说明