标签: boolean-expression

布尔表达式的数据模型

您是否知道在数据库中组织布尔表达式的方法,同时允许表达式的无限嵌套?

例:

a = 1 AND (b = 1 OR b = 2)
Run Code Online (Sandbox Code Playgroud)

整个表达式不应存储为varchar以保持数据完整性.

database-design datamodel boolean-expression

18
推荐指数
2
解决办法
5525
查看次数

Python布尔表达式和或

在python中,如果你写的东西像

foo==bar and spam or eggs
Run Code Online (Sandbox Code Playgroud)

如果布尔语句为true,则python似乎返回垃圾邮件,否则返回egg.有人可以解释这种行为吗?为什么表达式没有被评估为像一个长布尔值?

编辑:具体来说,我试图弄清楚为什么'垃圾'或'鸡蛋'作为表达结果返回的机制.

python syntax boolean-expression

18
推荐指数
2
解决办法
2万
查看次数

为什么Perl使用空字符串来表示布尔值false?

在标量(布尔)上下文中1计算表达式时,如果表达式求值为true ,则Perl使用显式值作为结果;如果表达式求值为false,则使用空字符串.我很好奇为什么Perl使用空字符串来表示布尔值false而不是0更直观.

请注意,我并不关心Perl将空字符串视为标量(布尔)上下文中的false.

编辑

如何使用true("false"例如)字符串作为false值的字符串表示来改变现有代码的含义?我们可以说在这样的改变之后改变语义的代码不像它本来那样健壮/正确吗?我猜字符串上下文在Perl中是如此普遍,以至于导致理智语义的唯一选择是,如果布尔值在向字符串转换为字符串之后保留其值...

perl boolean boolean-expression

18
推荐指数
2
解决办法
3095
查看次数

java中的布尔表达式解析器

是否有任何java库或技术来逐步解析布尔表达式?

我的意思是给出一个这样的表达式:

T && ( F || ( F && T ) )

它可以分解为一个表达式树来显示哪个令牌导致'F'值,就像这样(可能是这样的):

T &&               <- rhs false
    ( F ||         <- rhs false
        ( F && T ) <- eval, false
    )
Run Code Online (Sandbox Code Playgroud)

我试图将布尔表达式评估传达给非程序员.我和Anlr在一起,但是我无法做到这一点(似乎有一点学习曲线).

我并不反对自己写,但我宁愿不重新发明轮子.

java parsing boolean-expression

18
推荐指数
3
解决办法
2万
查看次数

Java 8+流:检查列表的对象实例的两个字段的顺序是否正确

标题可能有点模糊,但这是我所拥有的(在私有化代码中):

包含一些字段的类,包括BigDecimal和Date:

class MyObj{
  private java.math.BigDecimal percentage;
  private java.util.Date date;
  // Some more irrelevant fields

  // Getters and Setters
}
Run Code Online (Sandbox Code Playgroud)

在另一个类中,我有一个这些对象的列表(即java.util.List<MyObj> myList).我现在想要的是一个Java 8流来检查列表是否符合我的验证器的日期和百分比的正确顺序.

例如,以下列表将是真实的:

[ MyObj { percentage = 25, date = 01-01-2018 },
  MyObj { percentage = 50, date = 01-02-2018 },
  MyObj { percentage = 100, date = 15-04-2019 } ]
Run Code Online (Sandbox Code Playgroud)

但是这个列表是假的,因为百分比的顺序不正确:

[ MyObj { percentage = 25, date = 01-01-2018 },
  MyObj { percentage = 20, date = 01-02-2018 },
  MyObj { percentage = 100, …
Run Code Online (Sandbox Code Playgroud)

java sorting boolean-expression java-8 java-stream

17
推荐指数
2
解决办法
2266
查看次数

在C++中,为什么真正的&& true || false && false == true?

我想知道是否有人知道编译器解释以下代码的方式:

#include <iostream>
using namespace std;

int main() {
 cout << (true && true || false && false) << endl; // true
}
Run Code Online (Sandbox Code Playgroud)

这是真的,因为&&的优先级高于|| 或因为|| 是一个短路运算符(换句话说,短路运算符是否忽略所有后续表达式,或只是下一个表达式)?

c++ boolean-logic boolean-expression short-circuiting

16
推荐指数
5
解决办法
3万
查看次数

Java中的"Boolean.TRUE.equals(x)"有什么理由吗?

我在其中一个项目中遇到过这段代码

(这是Java)

if (Boolean.TRUE.equals(foo.isBar()))
Run Code Online (Sandbox Code Playgroud)

Foo#isBar()被定义为boolean isBar(),所以它无法返回null

真的有什么理由说它应该这样写吗?我自己也会写

if (foo.isBar())
Run Code Online (Sandbox Code Playgroud)

,但也许我错过了一些微妙的东西.

谢谢

java boolean-expression

16
推荐指数
3
解决办法
1万
查看次数

根据布尔没有转换器绑定Image.Source?

我希望将图像绑定到布尔值,并使图像的源依赖于布尔值

即true source ="image1"false source ="image2"

我想知道是否有办法内联它而不需要转换器.

wpf binding conditional boolean-expression converters

14
推荐指数
1
解决办法
1万
查看次数

在Ruby中评估像Array#join这样的许多布尔表达式

在Ruby中,您可以使用Array#join将多个字符串简单地连接在一起,并使用可选的分隔符.

[ "a", "b", "c" ].join        #=> "abc"
[ "a", "b", "c" ].join("-")   #=> "a-b-c"
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一个很好的语法糖与一堆布尔表达式做类似的事情.例如,我需要&&一堆表达式.但是,将使用哪些表达式由用户输入确定.所以不要做一堆

cumulative_value &&= expression[:a] if user[:input][:a]
Run Code Online (Sandbox Code Playgroud)

我想先根据输入收集所有表达式,然后将&&它们一起全部收集起来.就像是:

be1 = x > y
be2 = Proc.new {|string, regex| string =~ regex}
be3 = z < 5 && my_object.is_valid?
[be1,be2.call("abc",/*bc/),be3].eval_join(&&)
Run Code Online (Sandbox Code Playgroud)

默认情况下Ruby中是否有这样的设备?如果可能的话,我只想要一些合成糖来使代码更清洁.

ruby syntactic-sugar boolean-expression

14
推荐指数
2
解决办法
6801
查看次数

如何对缺失值进行布尔代数?

我想复制NA它们在R中表现的布尔值:

NA是一个有效的逻辑对象.如果x或y的分量是NA,如果结果不明确,则结果将是NA.换句话说,NA&TRUE评估为NA,但NA&FALSE评估为FALSE. http://stat.ethz.ch/R-manual/R-devel/library/base/html/Logic.html

我已经看到了None被推荐的缺失值,但是Python转换NoneFalse评估布尔表达式时,并计算None or FalseFalse.结果当然应该是None,因为没有给出缺失值的结论.

我如何在Python中实现这一目标?

编辑接受的答案使用按位布尔运算符正确计算,但要使用逻辑运算符实现相同的行为not,or并且and似乎需要更改Python编程语言.

python boolean-expression

14
推荐指数
2
解决办法
1054
查看次数