标签: case

scala中的类型安全的respond_to可能吗?

使用用于类型安全铸造的案例构造很容易在scala中完成.以下代码确保square仅在具有相应类型的对象上调用.

class O
class A extends O {
    def square(i: Int):Int = { i*i }
}
class B extends O {
    def square(d: Double):Double = { d*d }
}
class C extends O {}

def square(o: O) = o match {
    case a:A => print(a.square(3))
    case b:B => print(b.square(3.0))
    case c:C => print(9)
    case _ => print("9")
}
Run Code Online (Sandbox Code Playgroud)

另一方面,存在这样的情况:使用用于铸造的类型信息并不那么容易,并且仅检查a的可用性{def square(Int): Int}就足够了.scala中是否有一个允许执行类似操作的构造

def square(o: O) = o match {
    case a:{def square(Int):Int} => print(a.square(3))
    case b:{def square(Double):Double} …
Run Code Online (Sandbox Code Playgroud)

casting scala case typechecking respond-to

4
推荐指数
1
解决办法
332
查看次数

Makefile(非大小写敏感的目标)

使用makefile时,我想要以下内容:

make clean  
make Clean  
make CLean
make CLEan
make CLEAn
make ... 
Run Code Online (Sandbox Code Playgroud)

并且在我的makefile中都要做同样的事情.
(即我不希望制作目标区分大小写)

当然,我可以像这样写每一个:

.PHONY clean Clean CLean CLEan CLEAn ... 
clean Clean CLean CLEan CLEAn ...:  
    $(DELETE_STUFF)
Run Code Online (Sandbox Code Playgroud)

但是我认为你可以看出为什么这不是我们想要的.
我知道'make'有一个内置的宏叫做:MAKECMDGOALS,它等于输入make后输入的内容.

for example, running 'make clean all backup'   
$(MAKECMDGOALS) = "clean all backup"  
Run Code Online (Sandbox Code Playgroud)

我尝试在makefile的顶部执行此操作:

MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
Run Code Online (Sandbox Code Playgroud)

它确实将变量更改为全部小写,但仍然只调用键入目标目标的规则.

我甚至试图像这样覆盖它:

override MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
Run Code Online (Sandbox Code Playgroud)

希望能早点完成,但没有成功.

我打算做一个像这样的目标:

$(MAKECMDGOALS):
MAKECMDGOALS:= $(shell echo $(MAKECMDGOALS) | tr "[:upper:]" "[:lower:]")
#BUT I CAN'T CALL OTHER …
Run Code Online (Sandbox Code Playgroud)

makefile case case-sensitive

4
推荐指数
2
解决办法
2422
查看次数

在SQL中,如果为null,如何将日期字段转换为字符串?

我想在SQL Server 2008 R2中编写一个SQL查询,在日期为NULL时将日期转换为字符串.例如...

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
                                    FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
                                    US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755
Run Code Online (Sandbox Code Playgroud)

以上数据只是我当前数据的样本表.当我运行SELECT查询时,我希望它返回如下数据:

    Date                            ShipmentRef     RecieptNo
    2009-01-01 03:12:11.596         DS298-YYY       18060
    InsertRandomStringHere          FM298-YYY       95464
    2010-11-11 08:33:55.974         IL298-YYY       56703
    2003-08-01 07:00:44.846         UI835-XYX       40264
    InsertRandomStringHere          US655-YXY       34643
    2004-03-07 12:46:33.352         WE242-XXX       83755
Run Code Online (Sandbox Code Playgroud)

我不确定哪个更好,CASE或CONVERT.我非常感谢你给我的任何帮助.

sql select date case sql-server-2008-r2

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

(PHP)使字符串小写,第一个字母除外

我已经制作了一个简单的文本框,它会导致一个新的页面,它逐字回显输入(爆炸).现在我想将所有字母更改为小写,但第一个字母除外(如果这是以这种方式输入的话)

例如:Herman Archer LIVEs in NeW YORK - > Herman Archer住在纽约

我希望你能帮助我,提前谢谢!

php string exception case

4
推荐指数
2
解决办法
6170
查看次数

Hive中的CASE语句

好的,我有一个以下代码来标记具有二进制标志的tabl中具有最高month_cd的记录:

Select t1.month_cd, t2.max_month_cd
  ,CASE WHEN t2.max_month_cd != null then 0 else 1 end test_1
  ,CASE WHEN t2.max_month_cd = null then 0 else 1 end test_2
from source t1
Left join (
  Select 
    MAX(month_cd) as max_month_cd 
  From source 
) t2 
on t1.month_cd = t2.max_month_cd;
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很直接,但它返回的结果是:

month_cd  max_month_cd  test_1  test_2
201610    null          1       1
201611    201611        1       1
Run Code Online (Sandbox Code Playgroud)

对我来说没有任何意义,而且似乎太明显了,不能成为执行引擎中的错误.我错过了什么?

hadoop hive case hiveql

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

在为Postgres SQL选择情况下,如何使用like运算符?

我想编写一个带有CASE WHEN子句的SQL语句,该子句使用LIKE运算符,但是我不确定如何正确设置该语句的格式。

 SELECT
   services.id,
   (CASE services.description
     WHEN LIKE '%-'
       THEN services.amount * -1
     ELSE services.amount
   END) AS service_amount
 FROM services
Run Code Online (Sandbox Code Playgroud)

postgresql case

4
推荐指数
1
解决办法
3889
查看次数

由于空值,使用Case语句更新失败

我有一个表中的列,我想将当前值与另一个列交换为特定条目.当我没有把它留空时,我得到一个无空约束.

UPDATE bet.betEntry
SET direction= 
            CASE 
                WHEN (direction = '599065F7-96A9-4DF5-8577-2203BE9AA2E0') THEN  'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5'
                WHEN (direction = 'ABD92DB9-58D8-4C60-8A34-4C00EBBAB4A5') THEN '599065F7-96A9-4DF5-8577-2203BE9AA2E0'
         END    
FROM bet.betEntry be JOIN bet.fixture f ON  be.fixtureId = f.fixtureId
WHERE f.fixtureDate > '2019-01-12 13:29:00.000'
Run Code Online (Sandbox Code Playgroud)

sql sql-server case

4
推荐指数
1
解决办法
56
查看次数

在 FluentNhibernate 上禁用表名双引号

我正在将我的应用程序切换到Postgresql,我的架构中的所有表都是小写的,当我使用 NHibernate 进行查询时,它会向映射中的表名添加双引号,该表名在 PascalCase 中并导致查询失败我认为该表不存在。

我可以轻松转到所有映射类并将 Table 方法更改为小写,例如从 'Table("UserAccount")' 更改为 'Table("useraccount")',但我宁愿不必这样做。 .

我想知道是否有任何方法可以告诉 nhibernate 不要在查询中对表进行双引号,以便它可以正确找到它。

我试过这个:

PostgreSQLConfiguration.Standard.Raw("hbm2ddl.keywords","none").ConnectionString(x => x.Is(_connectionString));
Run Code Online (Sandbox Code Playgroud)

它没有用。我几乎会告诉 nhibernate 不要担心大小写,但是在使用 postgres 时遇到麻烦。

postgresql nhibernate case case-sensitive quote

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

如何在Postgresql中创建条件插入函数?

我尝试编写一个函数,column3 根据表中的值在表中插入一些值,但我不太熟悉在 Postgresql 9.6 中编写函数。

--Create some table

    CREATE TABLE test(column1 INT, column2 INT, column3 TEXT) 
    INSERT INTO test VALUES(-8020,15),(-200,1),(23,115)

--Build function

    CREATE OR REPLACE FUNCTION new_function()
    RETURNS TEXT AS 
    $$
    BEGIN

        IF test(column1) <= -7000 THEN INSERT INTO test(column3) VALUES('small');
        ELSIF test(column1) >= -7000 AND test(column2) <= 15 THEN INSERT INTO test(column3) VALUES('nohello');
        ELSIF test(column1) >= -7000 ANDtable(column2) >= 15 THEN INSERT INTO test(column3) VALUES('test');
        ELSE INSERT INTO test(column6) VALUES("nodata");
        END IF;

    END;
    $$
    LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

结果应该是一个如下所示的表:

Column1 …
Run Code Online (Sandbox Code Playgroud)

sql postgresql case sql-function sql-update

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

在 aws athena 中计算百分位数

我的查询结果正在 aws Quicksight 中使用。尽管quicksight提供了percentileCont()来为我们完成这项工作,但我想在查询中使用它而不是使用计算字段。

最终我想做的是创建一个点列,其中

under 25percentile -> 0
under 50 percentile -> 1 
under 75 percentile -> 2
rest -> 3
Run Code Online (Sandbox Code Playgroud)

取决于范围为 [a, b] 的列。

现在我找出每个百分位数的值并手动创建一个范围

With table as (
    SELECT *
         , cast(date_diff('day', last_transaction, current_date) as double) as col
)
SELECT *
     , case 
         when col between 0 and 25 then 0
         when col between 26 and 66 then 1
         when col between 67 and 193 then 2
         when col >= 194 then 3
       end as point
  FROM …
Run Code Online (Sandbox Code Playgroud)

sql case presto amazon-athena

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