标签: conditional-statements

用于控制转移的Common Lisp条件系统

我会事先承认以下是对我想要做的非常可怕的描述.提前道歉.请提问我帮忙解释一下.:-)

我用其他语言编写了ETL(提取,转换,加载),这些语言包含以下类似的单个操作:

// in class CountOperation
IEnumerable<Row> Execute(IEnumerable<Row> rows) {
    var count = 0;
    foreach (var row in rows) {
        row["record number"] = count++;
        yield return row;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将多个这些操作串在一起,并调用Dispatcher,它负责调用Operations并在它们之间推送数据.

我试图在Common Lisp中做类似的事情,我想使用相同的基本结构,即每个操作被定义为输入列表并输出列表的普通函数,但是懒得.

我可以define-condition使用condition(have-value)来使用类似yield行为,并且我可以在一个循环中运行它,并且它工作得很好.我以相同的方式定义操作,循环输入:

(defun count-records (rows)
   (loop for count from 0
         for row in rows
         do (signal 'have-value :value `(:count ,count @,row))))
Run Code Online (Sandbox Code Playgroud)

问题是如果我想将几个操作串在一起,并运行它们.我为这些编写调度程序的第一次尝试看起来像是:

(let ((next-op ...))  ;; pick an op from the set of all ops
  (loop
    (handler-bind
        ((have-value (...)))  ;; records output from …
Run Code Online (Sandbox Code Playgroud)

etl common-lisp lazy-evaluation control-flow conditional-statements

5
推荐指数
0
解决办法
553
查看次数

空循环而不循环检查条件

在一个多线程的C++程序中,我在一个线程中运行相当于这个:

while(obj->member) { } // waiting for obj->member to be set to false in another thread
Run Code Online (Sandbox Code Playgroud)

在另一个线程中,obj-> member设置为false.但是,即使将其设置为false,循环也不会中断.如果我改成它:

while(obj->member) { Sleep(1) }
Run Code Online (Sandbox Code Playgroud)

当obj-> member在另一个线程中设置为false时,它按预期工作并中断.
它为什么这样工作?

c++ multithreading sleep while-loop conditional-statements

5
推荐指数
2
解决办法
2315
查看次数

这个C/C++ if()语句是否可以评估为TRUE?

根据PC-lint,以下声明永远不会是TRUE:

if((variable & 0x02) == 1)
Run Code Online (Sandbox Code Playgroud)

我正在为嵌入式系统使用C编译器,TRUE只要设置了相应的位,就会对其进行评估variable.我想编译器正在进行TRUE/ FALSE比较两侧==而不是比较结果数字.换句话说,每次表达式(varable & 0x02)不为零(即TRUE)时,语句也将是TRUE,因为值1 is also TRUE(不为零).

我不知道C/C++标准是否清楚地定义了编译器在这种情况下应该如何表现.是否有C/C++专家可以根据标准(例如C90, C99,等)所说的回答这个问题?

PS:在上面的语句中,"variable"是一个unsigned char.

c c++ if-statement conditional-statements

5
推荐指数
2
解决办法
1388
查看次数

如何在if else循环中对同一数据使用多个条件?-Java / Android

我有3个Edittext,其输入类型为数字和1个按钮,说完成

我必须检查两个条件,以确保在edittexts中输入的值

当我单击“完成 ”按钮时,我应该能够执行以下操作

----首先要检查编辑文本是否为空

if ((a.getText().toString().equals("")) || (b.getText().toString().equals("")) || (c.getText().toString().equals("")))
    Toast.makeText(getApplicationContext(), "Don't leave grade points empty",0).show();
Run Code Online (Sandbox Code Playgroud)

----第二是检查输入的值是否在一定范围内

if((a1<5 || a1>10)||(b1<5 || b1>10)||(c1<5 || c1>10))
    Toast.makeText(getApplicationContext(), "Range should be between 15 to 25", 0).show();
Run Code Online (Sandbox Code Playgroud)

a,b,c和a1,b1,c1都代表相同的值,我刚刚将a,b,c的值解析为a1,b1,c1中的int

----然后,在其他部分,如果这些值通过上述条件,我应该可以使用它们。

else
{
//do something
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当所有3个edittext都为空时,在单击“ 完成”按钮时遇到“ 强制关闭”错误时,如何使其工作 。我试图将它们放在if,else if和else循环中,还尝试了if,if and else循环

如果不同时满足两个条件,该如何编码,然后转到其他部分?

救命 !!:)

java if-statement conditional-statements

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

测试是否没有给出位置参数的惯用方法?

如果没有给出位置参数,在 Bash 中测试最惯用的方法是什么?有很多方法可以检查这一点,我想知道是否有一种首选方法。

一些方法是:

((! $# )) # check if $# is 'not true'
(($# == 0)) # $# is 0
[[ ! $@ ]] # $@ is unset or null
Run Code Online (Sandbox Code Playgroud)

parameters bash idioms command-line-arguments conditional-statements

5
推荐指数
1
解决办法
4196
查看次数

条件均值声明

我有一个名为的数据集bwght,其中包含变量cigs(每天抽烟的香烟)

当我使用: 计算cigs数据集中的平均值时,我得到一个数字2.08.bwghtmean(bwght$cigs)

样本中1388名妇女中只有212名吸烟(1176名不吸烟):

summary(bwght$cigs>0) 给出结果:

Mode      FALSE    TRUE    NA's 
logical    1176     212       0
Run Code Online (Sandbox Code Playgroud)

我被要求找出cigs吸烟妇女的平均数(212).

我很难找到排除非吸烟者的正确语法= 0我尝试过:

  • mean(bwght$cigs| bwght$cigs>0)

  • mean(bwght$cigs>0 | bwght$cigs=TRUE)

  • if (bwght$cigs > 0){ sum(bwght$cigs) }

  • x <-as.numeric(bwght$cigs, rm="0"); mean(x)

但似乎没有任何作用!谁能帮帮我吗??

r mean conditional-statements

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

如何在我的程序中包含"和"在正确的位置

像往常一样,我只是另一个绝望的高中生,在经过大量的谷歌搜索后,他们不得不诉诸问题.

我正在研究其中一个可以在现实生活中应用的程序(但从来没有).在这种情况下,一个更改计数器,总计一角硬币,镍币,四分之一和剩余的分数,并用一句话显示它们.

我的问题是,我需要制作一个正确的句子格式,最后使用逗号和"和",这是我用我非常有限的当前知识来管理的.

  • 你看到货币分配的任何地方都是代表它的变量(美分,硬币等)
  • backupInput是保存用户所选分数的变量(从1-100开始)

我的计划部分涉及我想问的是:

    System.out.print(backupInput + ": ");

    // Outputting the quarters
    if (quarters > 0)
    {
      if (quarters == 1)
        System.out.print("one quarter, ");
      else
        System.out.print(quarters + " quarters, ");
    }

    // Outputting the dimes
    if (dimes > 0)
    {
      if (dimes == 1)
        System.out.print("one dime, ");
      else
        System.out.print(dimes + " dimes, ");
    }  

    // Outputting the nickels
    if (nickels > 0)
    {
      if (nickels == 1)
        System.out.print("one nickel, ");
      else
        System.out.print(nickels + " nickels ");
    }

    // …
Run Code Online (Sandbox Code Playgroud)

java currency conditional-statements

5
推荐指数
1
解决办法
128
查看次数

过滤具有条件的HABTM关联模型

序言:前几天我问了一个问题来解决一个HABTM过滤器,我甚至不能用教程来做,所以"Obi Kwan Kenobi你是我唯一的希望".

我想要实现的目标:按StaffStaffgroup中使用的GroupID过滤员工

我有以下tablelayout

  • 员工(一个人可以属于许多团体)
  • staff_staffgroups(HABTM链接表)
  • staffgroups(有一个组名)

变量$ tmp给我一个工作数组,但问题是Staff是StaffStaffgroups的子对象.我可以解析throu并重新组装一个数组,但这不是一个很好的解决方案.所以我想在Staff使用条件(参见注释行),但后来我得到错误1054"未找到列:1054未知列".我试图绑定和取消绑定,但没有结果.

$group_id = 2;
$tmp = $this->Staff->StaffStaffgroup->find('all',
        array('conditions' => array(
            'StaffStaffgroup.staffgroup_id' => $group_id,
            'Staff.isActive =' => "1",
            'Staff.last_name LIKE' => "%$name%",
            )
         )
);

debug($tmp);
Run Code Online (Sandbox Code Playgroud)
//$tmpConditions['AND'][] = array('StaffStaffgroup.staffgroup_id' => $group_ids);
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试了条件和可容纳的行为,但不幸的是它根本没有过滤任何东西

    $this->Staff->contain(array('StaffStaffgroup'));
    $this->paginate = array('StaffStaffgroup' =>array(
                                    array('conditions'  => array(
                                            'StaffStaffgroup.staffgroup_id' => '2'
                                        )
                                    )
                                )
    );
Run Code Online (Sandbox Code Playgroud)
  • 我添加到所有模型:public $ actsAs = array('Containable');
  • 我也尝试了内连接,但没有过滤:

     $this->paginate = array( 
     'conditions' => array('StaffStaffgroup.staffgroup_id' => 2 ),
     'joins' => array( …
    Run Code Online (Sandbox Code Playgroud)

filtering cakephp model conditional-statements

5
推荐指数
1
解决办法
1713
查看次数

当前 CPU 上哪个成本更高:算术运算还是条件?

20 到 30 年前,除法等算术运算是 CPU 成本最高的运算之一。在一段重复调用的代码中节省一个除法是显着的性能提升。但是今天的 CPU 具有快速的算术运算,并且由于它们大量使用指令流水线,条件可能会破坏高效执行。如果我想优化代码以提高速度,我应该更喜欢算术运算而不是条件运算吗?

示例 1

假设我们要实现模运算n。什么会表现得更好:

int c = a + b;
result = (c >= n) ? (c - n) : c;
Run Code Online (Sandbox Code Playgroud)

或者

result = (a + b) % n;
Run Code Online (Sandbox Code Playgroud)

?

示例 2

假设我们正在将 24 位有符号数转换为 32 位。什么会表现得更好:

int32_t x = ...;
result = (x & 0x800000) ? (x | 0xff000000) : x;
Run Code Online (Sandbox Code Playgroud)

或者

result = (x << 8) >> 8;
Run Code Online (Sandbox Code Playgroud)

?

cpu performance arithmetic-expressions conditional-statements

5
推荐指数
1
解决办法
1927
查看次数

Ruby - 除非值为真,否则返回假,在这种情况下返回值

如果a = false并且b = 2是否有一种简洁的方法来实现这一点?使用只return a unless b返回 '​​nil' 而不是 '2'。

我有

def checkit
  return a unless b
  b
end
Run Code Online (Sandbox Code Playgroud)

这个语句会调用 b 两次吗?

一个真实的案例是:

def current_user
  @current_user ||= authenticate_user
end

def authenticate_user
    head :unauthorized unless authenticate_from_cookie 
end

def authenticate_from_cookie
  .
  if user && secure_compare(user.cookie, cookie)
    return user
  else
    return nil
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby return conditional-statements

5
推荐指数
1
解决办法
5563
查看次数