C# 中没有类型有什么新功能?
我在工作中遇到如下代码:
throw new("some string goes here");
这是new("some string goes here")在 C# 中创建字符串的方法还是其他方法?
当我遇到一组奇怪的时序结果时,我正在搞乱一个小的自定义数据对象需要可以清洗,可比较和快速.这个对象的一些比较(和散列方法)只是委托给一个属性,所以我使用的是:
def __hash__(self):
return self.foo.__hash__()
Run Code Online (Sandbox Code Playgroud)
但经过测试,我发现它hash(self.foo)明显更快.出于好奇,我测试__eq__,__ne__和其他神奇的比较,才发现所有的人跑得更快,如果我用含糖的形式(==,!=,<等).为什么是这样?我认为加糖形式必须在引擎盖下进行相同的函数调用,但也许情况并非如此?
设置:围绕控制所有比较的实例属性的薄包装器.
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) 我正在阅读有关缓存和记忆的一些文章,以及如何使用委托和泛型轻松实现它.语法非常简单,实现起来非常简单,但我觉得由于重复性,应该可以基于属性生成代码,而不必反复编写相同的管道代码.
假设我们从默认示例开始:
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) 我一直试图在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中的语法糖.一个简单的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)
但是有没有更好的方法,没有用(>> =)弄乱线路并返回?
我刚刚发现了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.谁能解释一下?
不是真的了解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中读取文件的有效方法,并遇到了这个非常有趣的内容:
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) 在Python中,使用//除法强制结果为整数。乘法有等价的吗?
例如,假设我有一个整数W,我按 float 缩放f。最好有一个像 这样的运算符.*,这样:
int(W*f)==W.*f
会是真的。
syntactic-sugar ×10
python ×3
c# ×2
haskell ×2
perl ×2
attributes ×1
file-io ×1
maps ×1
new-operator ×1
performance ×1
postsharp ×1
scala ×1
scope ×1
syntax ×1