问题标签 [preconditions]

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 投票
1 回答
677 浏览

java - 如何将字符串解释为负数或零并相应地抛出 IAE?

我有一个方法,我接受一个字符串,它可以是数字作为字符串或普通字符串。

现在我想添加一个检查,假设是否有人clientId作为负数"-12345"或零传递"0",那么我想解释这个并抛出IllegalArgumentException消息作为"clientid must not be negative or zero as a number"或可能是其他一些好消息。如果可能的话,我如何使用番石榴前提条件来做到这一点?

根据建议,我使用以下代码:

有没有更好的方法呢?

0 投票
1 回答
182 浏览

error-handling - Clojure:解构时预先报告失败的值

在这个SO post 之后,我想在我的函数中打印前提条件的值。但是在以下情况下它对我来说失败了(可能是解构):

我有一个dir?辅助功能(随意跳过这个):

它工作得很好,并且使用is宏,我得到了一些很好的错误消息,我可以看到测试和传递的参数:

clojure.lang.PersistentList$EmptyList@1 (boot.user4515592986834245937.clj:86) 中的失败预期:(dir?(io/file "resources/statice")) 实际:(not (dir?#object[java.io.文件 0x6730a420 “资源/静态”]))

但是,当尝试在前提条件中使用它时:pre,我得到一个丑陋的错误:

clojure.lang.Compiler$CompilerException: java.lang.AssertionError: Assert failed: (is (dir? (io/file dir))), 编译:(boot.user4515592986834245937.clj:80:12) java.lang.AssertionError:断言失败:(是(dir?(io/file dir)))

我怎样才能在我的函数中得到一个很好的错误消息,就像上面的一样?

万一这很重要,我使用的是 Clojure 1.7。

0 投票
2 回答
585 浏览

java - 验证字符串是否为正数、空/空字符串

我有一个接受字符串的方法,它clientid有以下要求:

  • clientid可以是大于零的正数。但如果它是负数或零,则抛出IllegalArgumentException一条消息。
  • clientid不能是null空字符串。但如果是,则抛出IllegalArgumentException一条消息。
  • clientid也可以是普通字符串。例如 - 它可以是abcdefgh或任何其他字符串。

这段代码工作正常。现在的问题是,我不能使用高于版本 11 的 guava 库。如果我确实使用它,那么它会给使用这个库的客户带来问题,所以简而言之,我正在寻找final Long id = Longs.tryParse(clientid);不使用 guava 的替代品,或者可能与较旧的番石榴版本 11。因为Longs.tryParse方法是在番石榴 14 或更高版本中添加的。

最好的方法是什么?我们可以从 Apache Commons 使用什么?

0 投票
3 回答
15098 浏览

programming-languages - 什么是前置条件和后置条件?

我正在学习如何编程,但我无法完全理解的一件事是 preconditions 和postconditions

调用函数之前的 if 语句是否被视为前提条件,或者在大多数语言中是否有单独的更有效的方法?

我也在努力寻找任何我能以我目前的编程知识理解的先决条件的例子,如果有人能证明一个简单的例子,那么我真的很感激(任何语言都可以)

0 投票
1 回答
303 浏览

oracle - 我怎样才能知道,为什么带有先决条件的 Liquibase 迁移是 MARK_RAN 而不是 EXECUTED?

我遇到了 liquibase 变更集的问题。变更集在某种程度上是这样的:

我绝对知道table_atable_b并且table_c确实存在......但仍然一直在view-definition-v1.sql执行,我多次检查链接文件中的 SQL 是否有效。如果我直接发出该 SQL,它会毫无怨言地执行。

文件里面的SQLview-definition-v1.sql有点像

文件里面的SQLview-definition-v2.sql有点像

我已经尝试过tableName="table_a"or tableName="TABLE_A",但它仍然像它根本不起作用。我还有其他几个没有显示此问题的变更集。有人有任何线索吗?

使用的 Liquibase 版本是 3.4.2,数据库是 Oracle 12cR1 StandardEdition1

感谢您的任何提示和最好的问候,B

0 投票
2 回答
1073 浏览

linear-algebra - 哪个稀疏线性求解器更快?SparseLU 还是 BiCGSTAB?

我在一些稀疏矩阵上测试了 Eigen 的 SparseLU 和 BicGSTAB 方法,其密集对应物的大小范围从 3000*3000 到 16000*16000。所有案例都表明 SparseLU 比 BicGSTAB 方法快 13% 左右。

我没有为 BiCGSTAB 提供 RowMajor 稀疏矩阵,也没有给它任何预处理器。这可能是慢的原因。

所以我想知道,如果我两种方法都做得好,哪一种应该更快?

如果矩阵大小达到百万*百万怎么办?

非常感谢!

0 投票
1 回答
2014 浏览

swift - 使用前置条件测试 Swift 代码

你如何为有前置条件的 Swift 方法编写测试?这是一个例子:

使用XCTAssertThrowsError不起作用:

这在运行测试时会产生错误:

线程 1:EXEC_BAD_INSTRUCTION(代码=EXCI386_INVOP,子代码=0x0)

有没有办法测试 Swift 的先决条件?

0 投票
1 回答
333 浏览

mysql - 如何在 Mysql 中选择 varchar 大小?

表中有一个类型是 varchar 的列,我应该执行什么 sql select 来查看定义的varchar类型大小?

笔记!

  1. 问题在于在 varchar 列中选择最大值或最小值需要查看定义的类型大小。
  2. 是的,有一个DESCRIBEandEXPLAIN语句可以用来查看整个表的定义。但是这种方式不适合我,因为我只需要 liquibase 前提条件的编号来检测是否应该更新列。
0 投票
1 回答
169 浏览

design-by-contract - 异常是有效的后置条件吗?

考虑以下接口:

假设entitytargetworld都是有效的输入。但是用于查找路径的算法(在这种情况下是 Astar)无法找到路径,例如。目标被混凝土墙包围的位置。

声明后置条件是从实体目标的路径(开始到目标)或 NoPathException(假设未找到路径)是否有效? -或者前提条件是必须有一条从起点到终点的有效路径?

这不是作业,而是改进我们学期项目报告的问题。我不想学习任何框架,这纯粹是关于合同设计的标准和形式问题。感谢您对此事的任何澄清。

0 投票
1 回答
295 浏览

c++ - 当继承仅对某些最终类型产生先决条件时如何记录/断言

考虑这个简单的基类Foo,它有一个foo调用纯虚函数的函数foo_,用 Doxygen 记录:

我没有先决条件来记录这个抽象类。

现在,考虑一个派生类Bar,在该派生类上存在正确工作的前提条件:

现在,当我调用 x 时,我有一个先决条件foo_,即由 调用foo。然后,我有一个先决条件foo取决于最终类型。

一些问题 :

  1. Foo::foo无论最终类型如何,我都应该添加前提条件吗?如果用户在使用类时从不知道最终类型,这看起来很合乎逻辑。但是用户也可以在没有任何先决条件的情况下Baz从另一个类派生,并使用负值显式调用。这不应该是一个问题。FooBaz::foo(double)
  2. 在我的多态性概念中,班级Foo不必知道他的孩子的任何事情,那么前提条件就不能存在。但是母类的用户不必知道子类就可以使用该类。如何解决这个矛盾?
  3. 有没有一种特定的(/最好的)方法来用 Doxygen 记录这种事情?