标签: case-statement

在Delphi中检查关键字列表中关键字的最快方法是什么?

我有一小部分关键字.我真正想做的是类似于:

case MyKeyword of
  'CHIL': (code for CHIL);
  'HUSB': (code for HUSB);
  'WIFE': (code for WIFE);
  'SEX': (code for SEX);
  else (code for everything else);
end;
Run Code Online (Sandbox Code Playgroud)

不幸的是,CASE语句不能像字符串一样使用.

我可以使用直接的IF THEN ELSE IF结构,例如:

if MyKeyword = 'CHIL' then (code for CHIL)
else if MyKeyword = 'HUSB' then (code for HUSB)
else if MyKeyword = 'WIFE' then (code for WIFE)
else if MyKeyword = 'SEX' then (code for SEX)
else (code for everything else);
Run Code Online (Sandbox Code Playgroud)

但我听说这是相对低效的.

我一直在做的是:

P := pos(' ' + MyKeyword + …
Run Code Online (Sandbox Code Playgroud)

delphi lookup optimization case-statement

7
推荐指数
3
解决办法
930
查看次数

案例语句中的Delphi类型常量

case在Delphi语句中使用类型常量的最优雅(或最不丑陋)的方法是什么?

也就是说,假设您需要声明一个类型化的常量

const
  MY_CONST: cardinal = $12345678;
  ...
Run Code Online (Sandbox Code Playgroud)

那么Delphi编译器就不会接受

case MyExpression of
  MY_CONST: { Do Something };
  ...
end;
Run Code Online (Sandbox Code Playgroud)

但你需要写

case MyExpression of
  $12345678: { Do Something };
  ...
end;
Run Code Online (Sandbox Code Playgroud)

这容易出错,难以更新,也不优雅.

是否有任何技巧可以使编译器插入常量的值(最好通过检查const源代码中的常量值,但可能通过在运行时查找值)?我们假设您不会在运行时更改"常量"的值.

delphi case-statement

7
推荐指数
1
解决办法
1744
查看次数

SQL比较字符串

CASE 
WHEN ' 1a' = ' 1a                 '
THEN 'EQUAL - but it isn´t- HELP!!!!' ELSE 'UNEQUAL'
END                     
from dual;
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我,向我解释为什么数据库说这两个字符串是相同的

' 1a' = ' 1a                 '
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多陈述,但我找不到原因.我在Oracle 11g的规范中也进行了搜索,但没有任何解释.

string oracle compare case-statement oracle11g

7
推荐指数
1
解决办法
9197
查看次数

为什么我从GHCi收到此警告?

模式匹配时我收到一个好奇的警告,但只有当OverloadedStrings被启用时...

$ ghci -Wall
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> let f x = case (x :: [String]) of {[""] -> "root"; ["product", _] -> "product"; _ -> "unknown"}
Prelude> :q
Leaving GHCi.
$ ghci -Wall -XOverloadedStrings
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... …
Run Code Online (Sandbox Code Playgroud)

warnings haskell case-statement ghc overloaded-strings

6
推荐指数
1
解决办法
1795
查看次数

相同的案件条件

我正在将一些VB.NET代码转换为C#,因为我对它更熟悉,它可以帮助我更快地解决问题.但是,我遇到了这个代码,这不是VB.NET中的错误 - 但将其转换为C#会产生编译器错误.

VB.NET代码

Select Case name
    Case "FSTF"
    .....
    Case "FSTF"
    .....
End Select
Run Code Online (Sandbox Code Playgroud)

C#转换代码

switch(name) {
    case "FSTF":
        ....;
        break;
    case "FSTF":
        ....;
        break;
}
Run Code Online (Sandbox Code Playgroud)

错误是:

Label'case"FSTF":'已经出现在这个switch语句中.

这里的解决方案是什么 - 这是否意味着在VB.NET代码中,第二个case语句只是一个虚拟 - 或者第一个是假的?

c# vb.net case-statement switch-statement vb.net-to-c#

6
推荐指数
1
解决办法
1842
查看次数

Verilog Barrel Shifter

我想用verilog创建一个64位桶形移位器(现在向右旋转).我想知道是否有办法在不写65份案例陈述的情况下做到这一点?有没有办法写一些简单的代码,如:

    Y = {S[i - 1:0], S[63:i]};
Run Code Online (Sandbox Code Playgroud)

我在Xilinx中尝试了上面的代码并得到一个错误:我不是一个常数.

主要问题:如果没有庞大的案例陈述,有没有办法做到这一点?

verilog rotation bit-shift shift case-statement

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

如何在一个案例中处理多个值?

如何在一个内部处理多个值case?所以,如果我想执行的值相同的动作"first option""second option"

这是正确的方法吗?

switch(text)
{
    case "first option":
    {
    }
    case "second option":
    {
        string a="first or Second";
        break;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# case-statement switch-statement

6
推荐指数
1
解决办法
8311
查看次数

如何在CASE语句中分配多个值?

我需要根据 CASE 语句为我的选择分配两个值。伪:

select
    userid
  , case
        when name in ('A', 'B') then 'Apple'
        when name in ('C', 'D') then 'Pear'
    end as snack
from
    table
;
Run Code Online (Sandbox Code Playgroud)

我正在为 分配一个值snack。但假设我还想drink根据相同的条件为另一个变量分配一个值。一种方法是重复上述内容:

select
    userid
  , case
        when name in ('A', 'B') then 'Apple'
        when name in ('C', 'D') then 'Pear'
    end as snack
  , case
        when name in ('A', 'B') then 'Milk'
        when name in ('C', 'D') then 'Cola'
    end as drink
from
    table
;
Run Code Online (Sandbox Code Playgroud)

但是,如果我必须根据相同的条件分配更多值,例如、food、等,则此代码将变得难以维护。drink …

sql sql-server case-statement

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

撰写案例陈述

#!/bin/bash
until [read command -eq "end"]
do
echo What command would like to run?
read command
if [$command -eq "my-tweets"]; then
node liri.js $command
fi
if [$command -eq "do-what-it-says"];then
node liri.js $command
fi
if [$command -eq "spotify-this-song"]; then
echo What item would like to query?
read item
node liri.js $command $item
fi
if [$command -eq "movie-this"]; then
echo What item would like to query?
read item
node liri.js $command $item
fi
done
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个 case/if 语句来在运行代码的下一部分之前检查变量的值。我想根据用户输入的值检查$command创建此 case/if 语句的值。我不断收到命令未找到错误。

bash if-statement case-statement switch-statement

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

为什么我不能将枚举用于 switch-case-语句?

我想将枚举常量用于 switch-case-语句。

我正在使用以下枚举/类:

public enum Cons {

  ONE(1), 
  TWO(2);

  private final int val;

  private Cons(final int newVal) {
    val = newVal;
  }

  public int getVal() {
    return val;
  }
}



public class Main {

  public static void main(String[] args) {

    int test;

    // some code

    switch(test) {
        case Cons.ONE.getVal():
            // ...
            break;
        case Cons.TWO.getVal(): 
            // ...
            break;
        default:
            // ...
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

问题: “case 表达式必须是常量表达式” => 我的枚举的值不是常量,尽管该属性private final int val声明为final.

我如何使用这个枚举来进行案例陈述?

java enums case-statement switch-statement

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