小编Fle*_*ore的帖子

哪个更好的做法?

您有一系列要执行的函数.案例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)

当然,更好的意思是更易于维护和更容易理解.

maintainability

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

如何将对象添加到javascript命名空间?

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回调似乎都要求以这种方式使用它们,否则就会搞砸了范围.

javascript jquery namespaces

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

如何构建具有多个GET约束的restful路径?

假设您正在使用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的东西都错了吗?

rest routes ruby-on-rails

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

如何使用Ruby Sequel加入3个表?

我有一个数据库,其中笔记本和Notes具有many_to_many关系,Notes和Facts具有many_to_many关系.如何使用Ruby Sequel查询与给定Notebook关联的事实(通过注释间接关联).我应该在笔记本和事实之间创建另一个many_to_many关系吗?会更快吗?

ruby sql join sequel

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

在elixir中迭代元组的更干净的方法

我发现自己经常写这样的图案,我觉得它不理想:

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}的函数创建的地方

当我想忽略错误时,我这样做.

有什么替代方案吗?

elixir

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

如何在perl中取消引用此哈希?

#!/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哈希引用中的示例

但我相信因为我的哈希更复杂,所以对我来说不合适.我如何回到我传入的原始结构?

perl hash reference subroutine

0
推荐指数
1
解决办法
75
查看次数