问题标签 [conditional-statements]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
162 浏览

xml - 基于属性满足条件的节点数

下面是我正在使用PHP 的 XSLTProcessor处理的 XML 的一部分:

我需要知道在 x == y 的位置存在多少个“uf”节点。

在上面的示例中,这将是 2。

我试过循环和增加一个计数器变量,但我不能重新定义变量。

我尝试了很多 xsl:number 和 count/from 的组合,但无法正确获取 XPath 表达式。

谢谢!

0 投票
12 回答
98515 浏览

conditional-statements - 为什么要在条件中使用赋值?

在许多语言中,作业在条件下是合法的。我一直不明白这背后的原因。你为什么要写:

代替:

0 投票
6 回答
1616 浏览

c# - 删除 C# 中重复的硬编码循环和条件

我有一个类,它比较相同对象的 2 个实例,并生成它们的差异列表。这是通过循环遍历关键集合并使用已更改的列表填充一组其他集合来完成的(查看下面的代码后可能更有意义)。这有效,并生成一个对象,让我知道在“旧”对象和“新”对象之间究竟添加和删除了什么。
我的问题/担忧是……它真的很丑,有很多循环和条件。有没有更好的方法来存储/处理这个,而不必如此依赖无休止的硬编码条件组?


目标框架是 3.5。

0 投票
3 回答
11660 浏览

java - 让一个线程进入休眠状态,直到另一个线程解决了某个条件

这是完成(我认为是)同一件事的两段代码。

我基本上是在尝试学习如何使用 Java 1.5 的并发来摆脱 Thread.sleep(long)。第一个示例使用 ReentrantLock,第二个示例使用 CountDownLatch。我想要做的主要是让一个线程进入睡眠状态,直到另一个线程解决了一个条件。

ReentrantLock 在我用来决定是否唤醒另一个线程的布尔值上提供了一个锁,然后我使用带有等待/信号的条件来休眠另一个线程。据我所知,我需要使用锁的唯一原因是如果有多个线程需要对布尔值进行写访问。

CountDownLatch 似乎提供与 ReentrantLock 相同的功能,但没有(不必要的?)锁。然而,感觉就像我通过只需要一个倒计时来初始化它来劫持它的预期用途。我认为它应该在多个线程将要处理同一个任务时使用,而不是在多个线程正在等待一个任务时使用。

所以,问题:

  1. 我是否在 ReentrantLock 代码中为“正确的事情”使用了锁?如果我只在一个线程中写入布尔值,是否需要锁?只要我在唤醒任何其他线程之前重置布尔值,我就不会引起问题,可以吗?

  2. 是否有一个类似于 CountDownLatch 的类可以用来避免更自然地适合此任务的锁(假设我应该在这种情况下避免它们)?

  3. 还有其他方法可以改进我应该注意的代码吗?

示例一:

示例二:

0 投票
2 回答
382 浏览

ruby-on-rails - 思考狮身人面像索引未过期的记录

让 Thinking Sphinx 仅索引今天日期小于或等于记录的“expires_at”字段的记录的最佳方法是什么?

提前致谢。

0 投票
9 回答
1579 浏览

c++ - 循环中的条件评估?

strLine.length()评估多少次

我们是否需要在循环之前使用nLengthwithnLength分配给strLine.length()

0 投票
12 回答
416 浏览

conditional-statements - 哪个是循环中的首选条件?

哪个是首选?

这是来自“Accelerated C++:通过示例进行实用编程/Andrew Koenig, Barbara E. Moo”中的示例。只是想知道为什么作者更喜欢第一个

0 投票
1 回答
1325 浏览

c++ - 使用 GCC 提升线程编译器错误

在 linux,gcc 4.3 上,使用 boost::thread 实现和互斥体/条件变量编译一个类我得到以下奇怪的错误,显然是由于与 posix 线程库的类型冲突:

代码是:

与类声明

运算符错误发生在 boost 的 condition.hpp 中,在

我正在使用 Boost 1.38.0,在 Windows 上我没有发现任何问题。任何帮助表示赞赏!

0 投票
2 回答
2847 浏览

multithreading - boost线程中的虚假解除阻塞

我今天在Boost 线程文档中遇到了这个有趣的段落:

...

效果:原子调用 lock.unlock() 并阻塞当前线程。当调用 this->notify_one() 或 this->notify_all() 或spuriously时,线程将解除阻塞。当线程被解除阻塞时(无论出于何种原因),在调用等待返回之前调用 lock.lock() 重新获取锁。如果函数因异常退出,还可以通过调用 lock.lock() 重新获取锁。

所以我感兴趣的是“spuriously”这个词的含义。为什么线程会因为虚假原因而被解除阻塞?可以做些什么来解决这个问题?

0 投票
8 回答
9520 浏览

zend-framework - Zend Studio 报告警告:分配条件。这有那么糟糕吗?

我最近开始使用 Zend Studio,它报告了以下类型的代码警告:

要停止警告,代码需要这样编写:

为什么这被标记为警告?有这么糟糕吗?

我了解该警告可能旨在阻止此类错误:

它永远不会终止,因为 1 被分配给 $a,而 $a 又将 1 返回给 while 语句,而不是针对 $a 进行测试并在 $a 不为 1 时返回 false 给 while 语句。

容易犯的错误可能会验证警告,已授予,但是忘记在第二个示例中的 while 块末尾添加额外的 $f = fetch($q) 也会导致永远不会终止的循环. 如果我更改我的代码以删除警告,然后忘记在 while 块的末尾添加 $f = fetch($q) Zend 不会发出警告!

因此,通过删除有关常见错误的警告,我将自己设置为另一个常见错误。

出锅,入火。