标签: syntactic-sugar

C# 中没有类型有什么新功能?

C# 中没有类型有什么新功能?

我在工作中遇到如下代码:

throw new("some string goes here");

这是new("some string goes here")在 C# 中创建字符串的方法还是其他方法?

c# syntactic-sugar new-operator

12
推荐指数
2
解决办法
4208
查看次数

为什么对魔术方法的显式调用比"含糖"语法慢?

当我遇到一组奇怪的时序结果时,我正在搞乱一个小的自定义数据对象需要可以清洗,可比较和快速.这个对象的一些比较(和散列方法)只是委托给一个属性,所以我使用的是:

def __hash__(self):
    return self.foo.__hash__()
Run Code Online (Sandbox Code Playgroud)

但经过测试,我发现它hash(self.foo)明显更快.出于好奇,我测试__eq__,__ne__和其他神奇的比较,才发现所有的人跑得更快,如果我用含糖的形式(==,!=,<等).为什么是这样?我认为加糖形式必须在引擎盖下进行相同的函数调用,但也许情况并非如此?

Timeit结果

设置:围绕控制所有比较的实例属性的薄包装器.

Python 3.3.4 (v3.3.4:7ff62415e426, Feb 10 2014, 18:13:51) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import timeit
>>> 
>>> sugar_setup = '''\
... import datetime
... class Thin(object):
...     def __init__(self, f):
...             self._foo = f
...     def __hash__(self):
...             return hash(self._foo)
...     def __eq__(self, other):
...             return self._foo …
Run Code Online (Sandbox Code Playgroud)

python performance syntactic-sugar magic-methods

11
推荐指数
1
解决办法
313
查看次数

如何在使用Attribute装饰的方法中注入/生成管道代码?

我正在阅读有关缓存和记忆的一些文章,以及如何使用委托和泛型轻松实现它.语法非常简单,实现起来非常简单,但我觉得由于重复性,应该可以基于属性生成代码,而不必反复编写相同的管道代码.

假设我们从默认示例开始:

class Foo
{
  public int Fibonacci(int n)
  {
    return n > 1 ? Fibonacci(n-1) + Fibonacci(n-2) : n;
  }
}
Run Code Online (Sandbox Code Playgroud)

然后记住这个:

// Let's say we have a utility class somewhere with the following extension method:
// public static Func<TResult> Memoize<TResult>(this Func<TResult> f)

class Foo
{
  public Func<int,int> Fibonacci = fib;

  public Foo()
  {
    Fibonacci = Fibonacci.Memoize();
  }

  public int fib(int n)
  {
    return n > 1 ? Fibonacci(n-1) + Fibonacci(n-2) : n;
  }
}
Run Code Online (Sandbox Code Playgroud)

我想,一旦找到一个匹配其中一个Memoize扩展方法的标记方法,那么只需要创建一个代码生成器就可以更简单.因此,我可以添加一个属性,而不是编写这个管道代码:

class Foo
{ …
Run Code Online (Sandbox Code Playgroud)

c# attributes code-generation postsharp syntactic-sugar

10
推荐指数
1
解决办法
2199
查看次数

输出True和[]

我想知道为什么
True and []
返回[]而不是False

这个表达是一个语法糖吗?

python syntactic-sugar

10
推荐指数
1
解决办法
207
查看次数

什么是$()构造?

我一直试图在Haskell参考中找到这个的用法:

getHomeR = defaultLayout $ do
    setTitle "My Awesome Site"
    $(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

特别:

$(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

我知道$运算符优先于它的右边,但是我无法理解$()的用法.任何人?

haskell syntactic-sugar template-haskell

10
推荐指数
1
解决办法
220
查看次数

如何在一行中混合绑定(< - )和赋值(let)?(在Haskell)

这是关于Haskell中的语法糖.一个简单的Haskell程序:

main = do
  args <- getArgs
  let first = head args
  print first
Run Code Online (Sandbox Code Playgroud)

我在第一行(args <- getArgs)中使用绑定,在第二行()中使用纯赋值let first = ....有可能将它们合并成一个可读的单行程序吗?

我明白我可以重写绑定"脱糖":

main = do
  first <- getArgs >>= ( return . head )
  print first
Run Code Online (Sandbox Code Playgroud)

但是有没有更好的方法,没有用(>> =)弄乱线路并返回?

syntax haskell syntactic-sugar

9
推荐指数
4
解决办法
1827
查看次数

斯卡拉地图:神秘的语法糖?

我刚刚发现了scala的这种语法Map(这里以可变形式使用)

val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
Run Code Online (Sandbox Code Playgroud)

现在我不确定这是否是语言中内置的语法,或者这里是否有更基本的东西涉及地图扩展的事实PartialFunction.谁能解释一下?

maps scala syntactic-sugar scala-collections

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

是否有一种更清洁的方式来有条件地"持续"出这个Perl循环?

不是真的了解Perl,我一直在友好的搜索引擎的帮助下增强Perl脚本.

我发现如果条件成立,我需要在设置标志时突破循环:

foreach my $element (@array) {
    if($costlyCondition) {
        $flag = 1;
        last;
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道使用'last'的更好方法是这样的:

foreach my $element (@array) {
    last if ($costlyCondition);
}
Run Code Online (Sandbox Code Playgroud)

当然,这意味着虽然我可以享受语法糖,但我无法在循环中设置我的旗帜,这意味着我需要$costlyCondition再次在外面进行评估.

有更清洁的方法吗?

perl syntactic-sugar

9
推荐指数
3
解决办法
281
查看次数

花哨的文件在Perl中啜饮

我正在研究在Perl中读取文件的有效方法,并遇到了这个非常有趣的内容:

my $text = do { local (@ARGV, $/) = $file; <> };
Run Code Online (Sandbox Code Playgroud)

我的问题是:这究竟是如何工作的?通常在啜饮你设置的文件时$/ = undef,但我不知道这是怎么回事.事实证明,这一小段代码非常难以理解.

什么是简化的细分和解释?


现在我知道它是如何工作的,让我们真正想象!

并不是说这段代码有任何实际用途; 想出来并冷静看待它真的很有趣.这是一个同时啜饮多个文件的单线程!

my @texts = map { local (@ARGV, $/) = $_; <> } @files;
Run Code Online (Sandbox Code Playgroud)

perl file-io scope syntactic-sugar deobfuscation

9
推荐指数
1
解决办法
171
查看次数

Python 乘法相当于整数除法

在Python中,使用//除法强制结果为整数。乘法有等价的吗?

例如,假设我有一个整数W,我按 float 缩放f。最好有一个像 这样的运算符.*,这样:

int(W*f)==W.*f

会是真的。

python syntactic-sugar integer-division

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