标签: syntactic-sugar

为什么在别名SQL表时使用"AS"?

我刚刚遇到一个使用AS来表示别名的SQL语句,如下所示:

SELECT all, my, stuff
FROM someTableName AS a
INNER JOIN someOtherTableName AS b
    ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)

我以前看到的是:

SELECT all, my, stuff
FROM someTableName a
INNER JOIN someOtherTableName b
    ON a.id = b.id
Run Code Online (Sandbox Code Playgroud)

我假设没有区别,它只是语法糖,但其中哪一个更普遍/广泛传播?有什么理由比较喜欢一个吗?

编辑澄清:

我感谢所有答案和所有要点,但问题不是为什么或为什么不使用表别名.问题纯粹是关于对表别名使用"AS"关键字或将其遗漏.

sql syntax standards syntactic-sugar

16
推荐指数
2
解决办法
4403
查看次数

如何在ExpandoObject中使用集合初始化程序语法?

我注意到具有必需和方法的新ExpandoObject工具因此应该可以使用集合初始化语法以与向字典添加项目相同的方式向expando对象添加属性.IDictionary<string,object>IEnumerable<KeyValuePair<string, object>>Add(string, object)

Dictionary<string,object> dict = new Dictionary<string,object>() 
{
    { "Hello", "World" }
};

dynamic obj = new ExpandoObject()
{
    { "foo", "hello" },
    { "bar", 42 },
    { "baz", new object() }
};

int value = obj.bar;
Run Code Online (Sandbox Code Playgroud)

但似乎没有办法做到这一点.错误:

'System.Dynamic.ExpandoObject'不包含'添加'的定义

我认为这不起作用,因为接口是明确实现的.但有没有办法解决这个问题?这工作正常,

IDictionary<string, object> exdict = new ExpandoObject() as IDictionary<string, object>();
exdict.Add("foo", "hello");
exdict.Add("bar", 42);
exdict.Add("baz", new object());
Run Code Online (Sandbox Code Playgroud)

但是集合初始化器语法更整洁.

c# dynamic syntactic-sugar expandoobject object-initializer

15
推荐指数
2
解决办法
3943
查看次数

Perl中有哪种语法糖可以减少l/rvalue运算符和if语句的代码?

有一堆,因为Perl是一种非常含糖的语言,但任何语言中最常用的语句是if语句和设置值的组合.我想我发现了很多,但仍有一些差距.最终,目标是不必多次编写变量名称:

这是我到目前为止所拥有的:

$r ||= $s;          # $r = $s unless ($r);
$r //= $s;          # $r = $s unless (defined $r);
$r &&= $s;          # $r = $s if ($r);
$r = $c ? $s : $t;  # if ($c) { $r = $s } else { $r = $t }
$c ? $r : $s = $t;  # if ($c) { $r = $t } else { $s = $t }
$r = $s || $t;      # if ($s) …
Run Code Online (Sandbox Code Playgroud)

perl syntactic-sugar rvalue logical-operators

15
推荐指数
2
解决办法
1040
查看次数

Python装饰器只是语法糖?

可能重复:
了解Python装饰器

我很擅长使用Python装饰器,而且据我所知,我的第一印象是它们只是语法糖.

是否有更深刻的用途用于更复杂的用途?

python decorator syntactic-sugar

15
推荐指数
1
解决办法
5053
查看次数

PHP中的布尔赋值运算符

我发现自己经常这样做:

$foo = true;
$foo = $foo && false; // bool(false)
Run Code Online (Sandbox Code Playgroud)

使用按位运算符,您可以使用&=|=简写:

$foo = 1;
$foo &= 0; // int(0)
Run Code Online (Sandbox Code Playgroud)

鉴于按位运算1并且0在功能上等效于true和的布尔运算false,我们可以依赖于类型转换并执行以下操作:

$foo = true;
$foo &= false; // int(0)
$foo = (bool)$foo; // bool(false)
Run Code Online (Sandbox Code Playgroud)

...但是这很丑陋并且违背了使用速记赋值语法的目的,因为我们必须使用另一个语句来将类型返回到布尔值.

我真正想做的是这样的事情:

$foo = true;
$foo &&= false; // bool(false)
Run Code Online (Sandbox Code Playgroud)

......但&&=||=无效的运营商,很明显.所以,我的问题是 - 是否有一些其他含糖的语法或者可能是一个不起眼的核心功能可以作为替身?如果变量尽可能短$foo,那么使用$foo = $foo && false语法并不是什么大问题,但是具有多个维度的数组元素和/或对象方法调用会使语法非常冗长.

php syntax boolean-logic syntactic-sugar

15
推荐指数
2
解决办法
5620
查看次数

是否有相对jQuery选择器这样的东西?

我有一个带this变量的jquery对象的引用.我正在寻找一种将子选择器应用于对象的方法.

我正在使用$(this).find('table > tbody > tr > td'),但我的目标更像是$('[Value of $(this) goes here somehow] > table > tbody > tr > td').

我知道我可以做的$(this).children('table').children('tbody').children('tr').children('td'),但我想知道,如果有一些语法糖,我可以在这里使用.

jquery syntactic-sugar jquery-selectors

14
推荐指数
3
解决办法
8431
查看次数

在python中构建列表时忽略一个元素

我需要使用[f(char) for char in string]语法从python中的字符串构建一个列表,我希望能够忽略(不在列表中插入)f(x)的值等于None.

我怎样才能做到这一点 ?

python list syntactic-sugar

14
推荐指数
1
解决办法
8539
查看次数

foreach纯粹是"语法糖"吗?

当与数组一起使用时,编译器将foreach循环编译成类似for循环的循环foreach.并且当与or一起使用时,编译器将foreach循环编译成类似while循环的循环.那么这是否是纯粹?或者有什么复杂的东西吗?foreachIEnumerableIEnumerable<T>foreachsyntactic sugar

CLR知道foreach吗?foreach在MSIL代码中是否有专门设计的内容?

.net c# syntax foreach syntactic-sugar

14
推荐指数
2
解决办法
2459
查看次数

带尖括号的方法(<>)

是否可以在方法名称中使用尖括号,例如:

class Foo(ind1:Int,ind2:Int){...}
var v = new Foo(1,2)
v(1) = 3 //updates ind1
v<1> = 4 //updates ind2
Run Code Online (Sandbox Code Playgroud)

真实的情况显然比这更复杂!!我试图提供一个方便的用户界面.

syntax dsl scala syntactic-sugar

14
推荐指数
2
解决办法
2066
查看次数

在Ruby中评估像Array#join这样的许多布尔表达式

在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中是否有这样的设备?如果可能的话,我只想要一些合成糖来使代码更清洁.

ruby syntactic-sugar boolean-expression

14
推荐指数
2
解决办法
6801
查看次数