在C#中,有一种方法可以通过Enumerable.Any检查序列中的元素是否满足条件来减少if语句的长度(https://msdn.microsoft.com/en-us/library/vstudio/bb534972%28v= vs.100%29.aspx).
例如,而不是:
If ( string.Contains(">") || string.Contains("<") || string.Contains("&") || string.Contains("l") || string.Contains("p") )
Run Code Online (Sandbox Code Playgroud)
我们可以用
if (new [] { ">", "<", "&", "l", "p"}.Any(w => string.Contains(w)))
Run Code Online (Sandbox Code Playgroud)
在Java中是否有相同的,如果不是更好的方式?
关于新提出的React Effect Hook ;
Effecthook(useEffect())有什么优点和用例?
为什么它会更好componentDidMount/componentDidUpdate/componentWillUnmount?它与(性能/可读性)有何不同?
文件指出:
函数组件的主体内部不允许使用变异,订阅,计时器,日志记录和其他副作用(称为React的渲染阶段).
但我认为在生命周期方法中使用这些行为已经是常识,比如componentDidUpdate等,而不是render方法.
还有提到:
传递给useEffect的函数将在渲染提交到屏幕后运行.
但这不是什么componentDidMount&componentDidUpdate做什么呢?
我正在编写一个测试来验证我的程序是否能够解决不同复杂程度的问题。预期结果始终相同(解决方案已完成),因此单个测试定义适用于所有问题。
如何对从文件中读取的值列表运行相同的测试,但告诉 unittest 将每个问题视为单独的测试,以便我可以查明所有失败/通过的情况?(最好没有外部库)
为了避免显式地拥有test_solution_1, test_solution_2... test_solution_n,我最初的想法是让 for 循环遍历列表中的每一项,并一次运行一个断言:
class TestProblem(unittest.TestCase):
def test_all(self):
results = Counter()
rng = 50
for i in range(rng):
p = Problem(matrix_index=i) # generate instance of problem.
p.solve()
results[p.is_complete()] += 1 # log result of test.
self.assertTrue(p.is_complete(), msg="Failed at %s" % str(i))
# Now ensure all instances passed (useful when above assertion not included).
self.assertEqual(results[True], rng, msg="SCORE: %s / %s" % (results[True], rng))
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于,第一次故障会导致其余故障停止运行,因此更难以全面了解问题所在。
if-statement ×1
java ×1
javascript ×1
python ×1
python-3.x ×1
react-hooks ×1
reactjs ×1
unit-testing ×1