您有一系列要执行的函数.案例A:他们不依赖于彼此.哪个更好?
function main() {
a();
b();
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
a();
}
function a() {
...
b();
}
function b() {
...
c();
}
Run Code Online (Sandbox Code Playgroud)
案例B:他们确实依赖于之前的成功完成.
function main() {
if (a())
if (b())
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
if (!a()) return false;
if (!b()) return false;
c();
}
Run Code Online (Sandbox Code Playgroud)
要么
function main() {
a();
}
function a() {
... // maybe return false
b();
}
function b() {
... // maybe return false
c();
}
Run Code Online (Sandbox Code Playgroud)
当然,更好的意思是更易于维护和更容易理解.
var Test = (function() {
return {
useSub: function () {
this.Sub.sayHi();
},
init: function () {
$(document).ready(this.useSub);
}
};
})();
Test.Sub = (function () {
return {
sayHi: function () {
alert('hi');
}
};
})();
Test.useSub(); // works
Test.init(); // explodes
Run Code Online (Sandbox Code Playgroud)
上面我试图创建一个Test命名空间并向其添加一个对象Sub.我一直很好,直到我尝试在jQuery中使用该对象.错误是"Uncaught TypeError:无法调用方法'sayHi'未定义".如果有更好的方法,我愿意接受.
编辑:
显然这是演示代码.在我的实际应用程序中,我使用的解决方案因为我认为最清楚的是这一个:
var Namespace (function () {
return {
init: function () {
$(document).ready(function() {
Namespace.onReady();
}
},
onReady: function() {
alert('Now I am back in the Namespace scope. Proceed as planned');
}
};
})();
Run Code Online (Sandbox Code Playgroud)
Edit2:所有jQuery回调似乎都要求以这种方式使用它们,否则就会搞砸了范围.
假设您正在使用API,并且您想要很好的URL.例如,您希望提供基于作者查询文章的功能,可能还包括排序.
标准:
GET http://example.com/articles.php?author=5&sort=desc
Run Code Online (Sandbox Code Playgroud)
我想这样做的RESTful方式可能是:
GET http://example.com/articles/all/author/5/sort/desc
Run Code Online (Sandbox Code Playgroud)
我对么?或者我有这个REST的东西都错了吗?
我有一个数据库,其中笔记本和Notes具有many_to_many关系,Notes和Facts具有many_to_many关系.如何使用Ruby Sequel查询与给定Notebook关联的事实(通过注释间接关联).我应该在笔记本和事实之间创建另一个many_to_many关系吗?会更快吗?
我发现自己经常写这样的图案,我觉得它不理想:
Enum.filter(my_list, fn e ->
case e do
{:ok, x} -> true
{:error, y} -> false
end
end)
|> Enum.map(fn e -> {:ok, something} = e; something end)
Run Code Online (Sandbox Code Playgroud)
my_list由某个返回{:ok,x}或{:error,y}的函数创建的地方
当我想忽略错误时,我这样做.
有什么替代方案吗?
#!/usr/bin/perl
use Data::Dumper;
sub giveMeARef {
my %hash = %{$_[0]};
print "arg: ", Dumper($_[0]);
print "deref: ", Dumper(%hash);
}
my %hash = ( "a" => (1,2,3), "b" => (3,4,5));
giveMeARef(\%hash);
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
arg: $VAR1 = {
'2' => 3,
'4' => 5,
'a' => 1,
'b' => 3
};
deref: $VAR1 = 'b';
$VAR2 = 3;
$VAR3 = '2';
$VAR4 = 3;
$VAR5 = 'a';
$VAR6 = 1;
$VAR7 = '4';
$VAR8 = 5;
Run Code Online (Sandbox Code Playgroud)
我试着按照如何取消引用已传递给子例程的Perl哈希引用中的示例?
但我相信因为我的哈希更复杂,所以对我来说不合适.我如何回到我传入的原始结构?
elixir ×1
hash ×1
javascript ×1
join ×1
jquery ×1
namespaces ×1
perl ×1
reference ×1
rest ×1
routes ×1
ruby ×1
sequel ×1
sql ×1
subroutine ×1