简单.如果我使用:
public void Add(params int[] values)
Run Code Online (Sandbox Code Playgroud)
然后我可以用它作为:
Add(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)
但现在我正在处理键值对!我有一个KeyValue类来将整数链接到字符串值.所以我开始:
public void Add(params KeyValue[] values)
Run Code Online (Sandbox Code Playgroud)
但我不能用这个:
Add(1, "A", 2, "B", 3, "C", 4, "D");
Run Code Online (Sandbox Code Playgroud)
相反,我被迫使用:
Add(new KeyValue(1, "A"), new KeyValue(2, "B"), new KeyValue(3, "C"), new KeyValue(4, "D"));
Run Code Online (Sandbox Code Playgroud)
Ewww ......我已经不喜欢这个......
所以,现在我使用不带params修饰符的Add函数,只是将一个预定义的数组传递给这个函数.因为它只是用于测试的快速初始化,所以我不需要太多麻烦需要这些额外的代码,尽管我想保持代码简单易读.我很想知道使用我不能使用的方法的技巧但是有没有办法在不使用"new KeyValue()"构造的情况下做到这一点?
是否有可能有条件地将任意数量的命名默认参数传递给Python函数?
例如.有一个功能:
def func(arg, arg2='', arg3='def')
Run Code Online (Sandbox Code Playgroud)
现在的逻辑是我有一个条件来确定是否需要传递arg3,我可以这样做:
if condition == True:
func('arg', arg2='arg2', arg3='some value')
else:
func('arg', arg2='arg2')
Run Code Online (Sandbox Code Playgroud)
问题是,我可以用速记如下:
func('arg', 'arg2', 'some value' if condition == True else # nothing so default gets picked
)
Run Code Online (Sandbox Code Playgroud) 在JavaScript ES6中,我们可以创建对象,其中变量名称变为如下所示的键:
> let a = 'aaa'
'aaa'
> let b = 'bbb'
'bbb'
> { a, b }
{ a:"aaa", b:"bbb" }
Run Code Online (Sandbox Code Playgroud)
Ruby有与哈希相同的东西吗?
澄清:显然这个问题涉及速记符号.我找{a,b}不{a:a,b:b}.
通过阅读一些代码,我发现了使用!0和!1.我知道这些都是写作的短方式true和false.
!0 === true
!1 === false
Run Code Online (Sandbox Code Playgroud)
这当然可以节省几个字节,但还有其他原因可以使用它吗?
这种写作方式有名称吗?
ES6引入了一种简写符号来初始化具有函数和属性的对象.
// ES6 shorthand notation
const obj1 = {
a(b) {
console.log("ES6: obj1");
}
};
// ES5
var obj2 = {
a: function a(b) {
console.log("ES5: obj2");
}
};
obj2.a();
obj1.a();
new obj2.a();
new obj1.a();Run Code Online (Sandbox Code Playgroud)
但是,正如您所看到的,这些不同的符号表现不同.如果我new obj1.a()在浏览器中(测试过的Chrome和Firefox),我会得到一个TypeError: obj1.a is not a constructor.new obj2.a()表现完全正常.
这里发生了什么?有没有人有解释,和/或文档/规范的链接?
问题如下:
如果您使用addthis(分享按钮)查看任何网站...
一旦你浮动addthis按钮,所有所需的资产加载使用firebug或chrome检查器(不是源,屏幕上的实际文档......对象检查器)查看文档的主体.你会注意到addthis自动加载的附加资产看起来像这样:
<script type="text/javascript" src="//s7.addthis.com/static/r07/menu78.js"></script>
<link rel="stylesheet" type="text/css" href="//s7.addthis.com/static/r07/widget61.css" media="all">
Run Code Online (Sandbox Code Playgroud)
在上面的标签中http://的简短处理是什么?
以前有人用过吗?它有'官方'名称吗?如何跨浏览器兼容这种简短处理http协议的方法?
是的,我知道这会破坏爬虫/ seo的东西,但我正在考虑开始在无法访问(主要是,js处理的东西)机器人的情况下使用它.
好的还是坏的?
我注意到bash 表示法的返回状态明显不一致(( )).
考虑以下
$> A=0
$> ((A=A+1))
$> echo $? $A
0 1
Run Code Online (Sandbox Code Playgroud)
但是使用其他众所周知的速记增量表示法产生:
$> A=0
$> ((A++))
$> echo $? $A
1 1
Run Code Online (Sandbox Code Playgroud)
如果set -e脚本中有内置的第二个表示法将导致脚本退出,因为((A++))返回的非零的退出状态.在这个相关问题中或多或少地解决了这个问题.但它似乎并没有解释这两个符号在退出状态的差异((A=A+1))和((A++))
((A++))似乎1只有在A等于时返回0.(免责声明:我没有做过详尽的测试.在bash 4.1.2和4.2.25中测试过).所以最后一个问题归结为:
为什么要A=0; ((A++))回来1?
有没有可能写一个速记如果,ELSE IF,否则声明为PHP.
if/else是否清楚,但是当我想使用elseif时(除了switch)之外还有一个缺少方法吗?
if ($typeArray == 'date'){
echo 'date';
} else if($typeArray == 'time'){
echo 'time';
} else {
echo 'text';
}
Run Code Online (Sandbox Code Playgroud)
没有找到任何其他好的答案,其中有嵌套if语句的简写版本,包括elseif.
问候timmi
我喜欢Ruby的一件事是你可以用最短的方式表达事物.
我知道在分配时可以做到
x ||= a
# instead of
x = a unless x
# which is
x = x || a
Run Code Online (Sandbox Code Playgroud)
有模拟形式return吗?
# instead of
return x if x
Run Code Online (Sandbox Code Playgroud)
我只想"说" x一次.这个问题询问刚刚返回(没有),但是在返回void之外的其他东西时我看不到怎么做.
嗨,
边框宽度不同时边框的简写是什么?
我试过这个:
border:1px solid black, 2px solid black, 3px solid black, 4px solid black;
Run Code Online (Sandbox Code Playgroud)
还有这个:
border:1px 2px 3px 4px, solid, solid, solid, solid, black, black, black, black;
Run Code Online (Sandbox Code Playgroud)
但它们都不起作用.
谢谢.
shorthand ×10
javascript ×4
ecmascript-6 ×2
ruby ×2
bash ×1
boolean ×1
border ×1
c# ×1
css ×1
exitstatus ×1
function ×1
hash ×1
html ×1
http ×1
methods ×1
php ×1
protocols ×1
python ×1
shorthand-if ×1