在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中是否有这样的设备?如果可能的话,我只想要一些合成糖来使代码更清洁.
有人知道一个简化布尔表达式的算法吗?
我记得布尔代数和Karnaught地图,但这适用于EVERITHING为布尔值的数字硬件.我想要考虑一些子表达式不是布尔值的东西.
例如:
a == 1 && a == 3
Run Code Online (Sandbox Code Playgroud)
这可以转换为纯布尔表达式:
a1 && a3
Run Code Online (Sandbox Code Playgroud)
但这是表达是不可简化的,而对于算术的一点点知识,everibody可以确定表达式只是:
false
Run Code Online (Sandbox Code Playgroud)
有些人知道一些链接?
是否有类似于equals()表达"不等于"的方法?
我想要完成的一个例子如下:
if (secondaryPassword.equals(initialPassword))
{
JOptionPane.showMessageDialog(null, "You've successfully completed the program.");
} else {
secondaryPassword = JOptionPane.showInputDialog(null, "Your passwords do not match. Please enter you password again.");
}
Run Code Online (Sandbox Code Playgroud)
我试图找到一些不需要我使用的东西if ( a != c).
他们有理由这样做吗?我的意思是,在minterms的总和中,你用输出1寻找条件; 我不明白为什么他们称之为"minterms".为什么不是maxterms因为1大于0?
这背后有什么理由我不知道吗?或者我应该接受它而不问为什么?
logic boolean-logic boolean boolean-expression boolean-operations
我正在阅读关于Coq的教程.它构造一个bool类型如下:
Coq < Inductive bool : Set := true | false.
bool is defined
bool_rect is defined
bool_ind is defined
bool_rec is defined
Run Code Online (Sandbox Code Playgroud)
然后它显示了这些东西正在使用"检查".
Coq < Check bool_ind.
bool_ind
: forall P : bool -> Prop, P true -> P false -> forall b : bool, P b
Coq < Check bool_rec.
bool_rec
: forall P : bool -> Set, P true -> P false -> forall b : bool, P b
Coq < Check bool_rect.
bool_rect
: …Run Code Online (Sandbox Code Playgroud) 此方法搜索第一组单词字符(即:)[a-zA-Z0-9_],返回第一个匹配的组或None出现故障.
def test(str):
m = re.search(r'(\w+)', str)
if m:
return m.group(1)
return None
Run Code Online (Sandbox Code Playgroud)
相同的功能可以改写为:
def test2(str):
m = re.search(r'(\w+)', str)
return m and m.group(1)
Run Code Online (Sandbox Code Playgroud)
这工作原理相同,并且是记录在案的行为; 作为此页中明确指出:
表达式
x and y首先评估x; 如果x为false,则返回其值; 否则,y将评估并返回结果值.
但是,作为一个布尔运算符(它甚至在手册上都这么说),我期望and返回一个布尔值.结果,当我发现(如何)这有效时,我感到很惊讶.
有什么其他用例,和/或这种相当不直观的实现的理由是什么?
我已经使用PHP了很长一段时间了,但这对我来说总是一个谜,在变量前正确使用感叹号(负号).
有什么!$var表明?是var false,空,没有设置等?
以下是我需要学习的一些例子......
例1:
$string = 'hello';
$hello = (!empty($string)) ? $string : '';
if (!$hello)
{
die('Variable hello is empty');
}
Run Code Online (Sandbox Code Playgroud)
这个例子有效吗?如果$string是空的话,if语句真的可以工作吗?
例2:
$int = 5;
$count = (!empty($int)) ? $int : 0;
// Note the positive check here
if ($count)
{
die('Variable count was not empty');
}
Run Code Online (Sandbox Code Playgroud)
这个例子有效吗?
我从不使用上述任何示例,我将这些限制if ($var)为仅具有布尔值的变量.我只需要知道这些例子是否有效,这样我就可以扩大对if ($var)语句的使用范围.他们看起来很干净.
谢谢.
在Numpy中,我可以像这样生成一个布尔数组:
>>> arr = np.array([1, 2, 1, 2, 3, 6, 9])
>>> arr > 2
array([False, False, False, False, True, True, True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)
有可能将比较链接在一起吗?例如:
>>> 6 > arr > 2
array([False, False, False, False, True, False, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud) 我在面试准备书 - 面试算法中看到了这一点.它没有说出答案是什么.
根据我的知识,它确实返回错误.我错过了什么吗?
我正在浏览一些用于验证表单条目的Javascript代码,我注意到了一个if读取的语句if (!(x < y && y > x)) {...}
我最初的想法是,这种重言式结构完全是多余的,应该放弃两个比较中的一个.万一有机会我错了,但事实上还有更多,我想我会问.
我的另一个想法是,它可能是另一种语言所必需的一些成语的例子,程序员在这里只是习惯性地将它们带到Javascript中(虽然我会惊讶地发现这样的语言是必需的,也用于任何类型的环境).
编辑
特定代码的功能是测试提交事件的开始和结束日期是否可能(即结束日期是在开始日期之后).实际的例子读取if(!(start_time < end_time && end_time > start_time)) {...}其中两个start_time和end_time的DateTime值.
编辑2
不是这个问题的重复,因为在这种情况下,问题是需要测试在if声明中看起来相互包含的两个条件,而在这种情况下,问题是如何使if声明解决似乎需要两个相互排斥的条件是同时是真的.