我只是想知道是否有任何方法使我的对象返回false如果放在if语句中.原因是我正在制作一个自定义异常类.我希望能够做一些事情
class Dog{
public function lookAround()
{
if(seeDog())
{
return bark;
}
else
{
return sit;
}
}
public function seeDog()
{
if(object == Dog)
{
return "husky";
}
else
{
return Dog_Exception(no_see);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个非常愚蠢的例子.但是,重点是,当这个对象成立时,if(seeDog())测试将评估true字符串"husky"和Dog_Exception对象.如果可能的话,我想Dog_Exception评估false,如果处于一个if条件.这样我就不必使用类似的构造等if(typeof(seeDog()) == Dog_Exception).我怀疑这是可能的,但任何帮助都会很棒.谢谢!
我正在尝试为嵌套的if语句编写一个条件,但是没有找到使用if语句的好例子.以下elsif条件失败,并允许嵌套在其下的代码在以下情况下触发$status == 6:
if ($dt1 > $dt2 ) {do one thing}
elsif(($status != 3) || ($status != 6)) { do something else}
else {do something completely different}
Run Code Online (Sandbox Code Playgroud)
我想避免为每个条件设置另一个elsif,因为实际驻留在这里的代码是几行.
我刚刚发现自己编写了这行代码,我不太喜欢这样做:
if ('upload' in request.POST) or ('delete' in request.POST):
Run Code Online (Sandbox Code Playgroud)
我已经考虑过列表理解,它看起来像这样:
if [value for value in ['upload','delete'] if value in request.POST]:
Run Code Online (Sandbox Code Playgroud)
哪个不是更好.我非常简单的问题是:这可以简化吗?或者这只是想要太聪明?
我看到了一段像这样的java代码:
int y = 100;
boolean x = y <= 0;
System.out.println(x);
Run Code Online (Sandbox Code Playgroud)
<=由于这种使用方式对我来说很奇怪,任何人都可以在<=这里解释一下,我该如何使用它?
class Program
{
static void Main(string[] args)
{
bool success = true;
int[] array = { 10, 15, 20 };
foreach (var i in array)
success = success && SynchronizeAccount(i);
}
static bool SynchronizeAccount(int i)
{
Console.WriteLine(i);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
输出为10.在第一步之后,'success'变为false并且永远不会为true,因此c#在第一次迭代后停止循环执行.但我需要SynchronizeAccount的SIDE效果,而不是'成功'值.
我有一个方法,包括(在后续行中)以下代码:
candidate_lines.each do |line|
return line if priority_1?(line) && line.marked_by?(self)
end
Run Code Online (Sandbox Code Playgroud)
据我所知,其中的方法是无关紧要的.是什么让我感到困惑,我有一个测试应该只是通过我给出的规范跳过该方法的一部分:
it "without any priority 1 lines, returns all priority 2 lines marked by itself" do
line1 = double :line, marked_by?: true
line2 = double :line, marked_by?: true
allow(joshua).to receive(:priority_1?).and_return(:false)
expect(joshua).to receive(:candidate_lines).and_return([line1, line2])
expect(joshua.tiebreak_lines).to eq [line1, line2]
end
Run Code Online (Sandbox Code Playgroud)
然而,当我运行测试时,返回语句将被触发.我已经在'return line ...'行之前使用puts语句手动测试了它,结果是,'priority_1?(line)'返回false,由于某种原因'priority_1?(line)&& line. marked_by?(self)'正在评估为true.
这里发生了什么事?
假设我在Shell中输入,然后我得到True.
>>>ar=[2,4,6,8]
>>>2 in ar
True
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用它时,它不起作用
>>>if 2 in ar==True:
print("YES")
>>>
>>>
Run Code Online (Sandbox Code Playgroud)
它不起作用!if条件为False.我该怎么做才能检查带有循环的列表中是否有一个术语?例如:我有一些随机列表,我必须打印列表中的所有偶数?
假设我想检查给定元组中是否存在两个给定元素中的任何一个,例如:
if foo in my_tuple or bar in my_tuple:
Run Code Online (Sandbox Code Playgroud)
是否有更多的pythonic方式来构建这个表达式?具体来说,如果我想检查几个元素,那么这些语句会变得烦人.我试过了
if (foo or bar) in my_tuple:
Run Code Online (Sandbox Code Playgroud)
但这会选择foo over bar并仅检查foo.将不胜感激.
我一直在寻找一个解释布尔表达式的顺序,但找不到一个.
看看这个声明:
if (locClsTanken.PlaceID == -1 && locRwF.PlaceID > -1 || locClsTanken.DagPrijs == 0)
Run Code Online (Sandbox Code Playgroud)
这是如何评估的.
会是这样的:
if ((locClsTanken.PlaceID == -1 && locRwF.PlaceID > -1) || locClsTanken.DagPrijs == 0)
Run Code Online (Sandbox Code Playgroud)
或者像这样:
if (locClsTanken.PlaceID == -1 && (locRwF.PlaceID > -1 || locClsTanken.DagPrijs == 0))
Run Code Online (Sandbox Code Playgroud)
是否有一些关于此的文档我不知道正确的搜索词,因为英语不是我的语言.
我知道我可以测试它,但我想找到关于这个的文档,所以我可以完全理解它
如果需要组合布尔表达式,我们通常使用逻辑运算符.如果不使用逻辑运算符,我想知道表达式.
int x=101;
if(90<=x<=100)
cout<<'A';
Run Code Online (Sandbox Code Playgroud)
此代码仍在控制台上打印"A".你能帮我理解一下这个布尔表达式的评估方式和顺序.
c++ boolean-expression logical-operators relational-operators
python ×3
c# ×2
boolean ×1
c++ ×1
if-statement ×1
java ×1
object ×1
perl ×1
php ×1
python-2.7 ×1
rspec ×1
ruby ×1
side-effects ×1