编辑2016年1月:由于这仍然备受关注.自从问这个我已经完成了一些AngularJS项目,并且对于那些我最常用的项目factory,构建了一个对象并在最后返回了对象.我下面的语句是仍然如此,但是.
编辑:我想,我终于明白了两者之间的主要区别,和我有一个代码示例演示.我也在想这个问题所提出的重复不同.重复的说,服务不是实例化,但如果你将其设置为我下面演示,它实际上是.服务可以被设置为是完全一样的工厂.我还将提供显示工厂故障服务的代码,这似乎没有其他答案.
如果我成立VaderService像这样(即服务):
var module = angular.module('MyApp.services', []);
module.service('VaderService', function() {
this.speak = function (name) {
return 'Join the dark side ' + name;
}
});
Run Code Online (Sandbox Code Playgroud)
然后在我的控制,我可以这样做:
module.controller('StarWarsController', function($scope, VaderService) {
$scope.luke = VaderService.speak('luke');
});
Run Code Online (Sandbox Code Playgroud)
通过服务,注入到控制器的VaderService被实例化,所以我可以调用VaderService.speak,但是,如果我将VaderService更改为module.factory,控制器中的代码将不再起作用,这是主要区别.随着工厂,VaderService注入到控制器不实例化,这就是为什么你需要设立一家工厂(见我的问题为例)返回一个对象.
但是,您可以设置在完全相同的方式服务,你可以建立一个工厂(IE有它返回一个对象)和服务的行为完全一样作为一个工厂
鉴于此信息,我认为没有理由使用工厂超过服务,服务可以做任何工厂可以做的更多.
下面原来的问题.
我知道这已经被问的时候加载,但我实在看不出工厂和服务之间的功能差异.我读过这个教程:http://blogs.clevertech.biz/startupblog/angularjs-factory-service-provider
它似乎给一个合理的很好的解释,但是,我设立了我的应用程序如下:
的index.html
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
<script src="lib/angular/angular.js"></script>
<script type="text/javascript" src="js/controllers.js"></script>
<script type="text/javascript" src="js/VaderService.js"></script>
<script type="text/javascript" src="js/app.js"></script>
</head>
<body ng-app="MyApp">
<table ng-controller="StarWarsController">
<tbody>
<tr><td>{{luke}}</td></tr>
</tbody>
</table> …Run Code Online (Sandbox Code Playgroud) 我正试图在打"类型俄罗斯方块"方面做得更好.我有这些功能:
(=<<) :: Monad m => (a -> m b) -> m a -> m b
zip :: [a] -> [b] -> [(a, b)]
Run Code Online (Sandbox Code Playgroud)
而GHCi告诉我:
(zip =<<) :: ([b] -> [a]) -> [b] -> [(a, b)]
Run Code Online (Sandbox Code Playgroud)
我很难搞清楚如何从前两个签到最终签名.我的直觉(由于缺乏一个更好的词)是说的第一个参数=<<,即a -> mb以某种方式对和解的签名zip,然后将其都应该从脱落.但我无法理解如何实现这一飞跃.它可以分解为一系列易于遵循的步骤吗?
我看到很多问题,人们在问这怎么可以避免"毫无意义"的合并提交.
合并提交到底有什么不好?我觉得它们很有用,因为你可以确切地看到两个开发人员开始工作的地方,以及工作合并在一起的地方.正如许多答案所暗示的那样,看起来像变基,破坏了这些信息并且你失去了很多项目的历史.
有什么我错过了使合并提交不受欢迎吗?
我知道有什么用运营商在做的东西像function($x,$y) use ($z) { ...
我不明白为什么 PHP在其他语言不使用时使用这种结构?
当我在eclipse中编辑XML文件时,我希望标签为4个空格.我知道该去哪里更改,但该选项已被禁用.请参阅附带的屏幕截图

如何让它让我把它设置为4?
我有一节课:
class Validator {
private $validationArray;
private $cleanedValues;
public function __construct($arg1, $arg2=NULL) {
if(empty($arg2)) {
$this->LoadValidatorByName($arg1);
} else {
$this->LoadValidatorFromLeadType($arg1, $arg2);
}
}
private function LoadValidatorFromLeadType($lead_type, $vocabulary) {
$ErrorReporter = new ErrorReporter;
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
...some more stuff
Run Code Online (Sandbox Code Playgroud)
函数taxonomy_get_term_by_name是一个Drupal函数,但我遇到的问题是PHP问题.
调用此方法时,PHP会抱怨:
Strict warning: Only variables should be passed by reference in Validator->LoadValidatorFromLeadType() (line 32 of [path to my file])
Run Code Online (Sandbox Code Playgroud)
第32行是:
$taxonomy_term = reset(taxonomy_get_term_by_name($lead_type, $vocabulary));
Run Code Online (Sandbox Code Playgroud)
我已经查看了错误,我很确定我知道这意味着什么,但我无法理解导致此警告的代码有什么问题.
我正处于制作MVC Web应用程序的最初阶段.我想尝试做作曲家风格的事情.到目前为止,这是我的目录结构:
public_html
|-vendor
| |-MyVendorName
| | |-DomainObjectClass.php
Run Code Online (Sandbox Code Playgroud)
这就是我存储域对象的地方.
我也试图尽可能接近MVC来回答这个问题
我有点卡住的地方是模型,控制器,视图,服务,DataMappers等的位置.我应该创建MyVendorName的子目录(例如MyVendoreName/DomainObjects/DomainObjectClass.php和MyVendorName/Services/SomeServiceClass.php等)或者它是否更明智地将目录与供应商称为类或src或其他东西分开并在那里做MVC的东西?
编辑:每个人都说供应商是第三方库,我明白了.但是我编写域对象的方式与MVC方面非常分离.事实上,他们甚至不知道他们是MVC应用程序的一部分.它们很容易在其他项目中重复使用(我打算这样做).所以把它放在src /或app /中似乎不合逻辑
如果我[[ "0" =~ "^[0-9]+$" ]] && echo hello在终端上做,我希望看到"你好"这个词
但是,什么都没有打印.我究竟做错了什么?
假设我有以下类型签名:
someFunction :: (Eq a, Eq b) => a -> b
Run Code Online (Sandbox Code Playgroud)
实施:
someFunction x = (2 :: Int)
Run Code Online (Sandbox Code Playgroud)
(不要把它放得太远,这只是一个例子).
我对签名的理解是" someFunction接受一个作为Eq类型类的实例的参数,并返回一个值(可以是不同类型),它是Eq类型类的实例".Int是一个实例Eq,为什么GHC对这个实现感到不安?
这个错误很明显:
Run Code Online (Sandbox Code Playgroud)Couldn't match expected type ‘b’ with actual type ‘Int’ ‘b’ is a rigid type variable bound by the type signature for: someFunction :: forall a b. (Eq a, Eq b) => a -> b
我想我不明白的是它要求"forall" b.使用这个函数的任何代码都应该只依赖于b一个实例Eq,对吧?在我看来,实现确实符合签名.我的实施怎么样打破了这个签名的期望?
haskell types compiler-errors typeclass parametric-polymorphism
我正在研究一个使用Unix域套接字的简单bash脚本守护进程.我有一个像这样的循环:
#!/bin/bash
while true
do
rm /var/run/mysock.sock
command=`nc -Ul /var/run/mysock.sock`
echo $command > /tmp/command
done
Run Code Online (Sandbox Code Playgroud)
我正在回应/ tmp/command的命令只是为了调试目的.
这是最好的方法吗?
php ×3
bash ×2
haskell ×2
types ×2
angularjs ×1
class ×1
closures ×1
composer-php ×1
composition ×1
eclipse ×1
git ×1
git-merge ×1
git-rebase ×1
javascript ×1
regex ×1
sockets ×1
typeclass ×1