我经常听到Scala课程和解释:"但在实际代码中我们不使用递归,而是使用尾递归".
这是否意味着在我的Real代码中我不应该使用递归,但是尾递归非常类似于循环并且不需要史诗短语"为了理解递归,您首先需要理解递归".
实际上,考虑到你的堆栈..你更可能会使用类似循环的尾递归.
我错了吗?这种"经典"递归是否仅适用于教育目的,让您的大脑回到大学过去?
或者,尽管如此,我们还可以使用它..递归调用的深度小于X(其中X是堆栈溢出限制).或者我们可以从经典递归开始编码,然后,害怕你的堆栈吹了一天,应用几个重构使它像尾巴一样在重构领域使用更强大?
问题:你会使用/在你的真实代码中使用'经典头'递归的一些真实样本,可能还没有重构为尾部的一个?

看来这是工作的解决方案,展示了如何一起工作$httpBacked http://jsfiddle.net/EgMpe/8/
但对于我的情况:
路线
app.config(['$routeProvider', function($routeProvider) { $routeProvider.
when('/', {templateUrl: 'partials/user-list.html'}).
Run Code Online (Sandbox Code Playgroud)
...
假货服务:
app.run(function($httpBackend) {
var users = [{"id":1,"name":"bob","email":"bob@bobs.com"}, {"id":2,"name":"bob2","email":"bob2@bobs.com"}]
$httpBackend.whenGET('/rest/users').respond(function(method,url,data) {
console.log("Getting users");
return [200, users, {}];
});
});
Run Code Online (Sandbox Code Playgroud)
..
真实服务:
services.factory('Users', function($resource){
return $resource('/rest/users', {}, {
get: {method: 'GET', isArray:true}
});
});
Run Code Online (Sandbox Code Playgroud)
我有错误的时候去我的"/"路由重定向我user-list.html页:
错误:意外请求:GET partials/user-list.html $ httpBackend不再需要请求.../mysite/public/angular/libs/angular-1.2.0/angular-mocks.js:1060:9)
问题1:是否httpBackend阻止做任何其他http要求?
我尝试使用passThrough方法让http命中真正的服务器端:
$httpBackend.whenGET(/^\/mysite\//).passThrough();
Run Code Online (Sandbox Code Playgroud)
但这没有用.
我运行我的测试:
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyStuff.class)
public class MyStuffTest { ..whatever
Run Code Online (Sandbox Code Playgroud)
在我ZonedDateTime为该代码添加了类之后,它看起来失败并出现以下错误:
java.lang.IllegalStateException:无法转换名为MyCode的类原因:java.time.ZonedDateTime中找不到[source error] toInstant()
在我的代码的某处我有:
long longTimeNoSee = ZonedDateTime.parse(getateTimeString()).toInstant().toEpochMilli();
Run Code Online (Sandbox Code Playgroud)
我想这是一个错误powermock.但也许有人有点想法(?)
public class SoftwareTest extends UnitTest {
@Before
public void setup() {
Fixtures.deleteAll(); // will fail if comment that. why?????
}
@Test
public void createSoftwareWithNullAuthor() {
// when author is null
Author nullAuthor = null;
Software software = new Software("software1", "description1", nullAuthor);
try {
software.save();
fail("author should not be null");
} catch (PersistenceException ex) {
}
}
@Test
public void createSoftwareWithOkAuthor() {
// when author is ok
Author okAuthor = new Author("author1", "email1").save(); // ERROR HERE!
Software software2 = new Software("software2", …Run Code Online (Sandbox Code Playgroud) 我试着在playframework+ scala+ 上写一个应用程序Angular JS.目的是创建一个Web应用程序,当JavaScript处于OFF状态或浏览器中为ON时,该应用程序可以正常工作.这是通常的要求,当一个人写一个公共站点(这应该是对人和谷歌的索引)
所以我最终写了大约50%的代码JavaScript,有两个(2)文件夹名为"controller" - 一个用于Scala代码,一个用于JS代码(因为AngularJS也使用控制器概念).
此外,由于JS代码应该使用Ajax调用,我不得不创建一个返回的scala-controller json,但不会html返回客户端的请求.而且......这一切我都不喜欢.这似乎太费劲了.
在playframework模板方面,我应该想到如何结合Scala使用JavaScript,传递参数从一种语言到另一种.使用一些技巧,如显示的是当JS会被处理,显示的是当它应该被关闭.
这一切都使我的模板不那么难以理解,有一天,当我拥有庞大的代码库时,我可能会想出一个复制模板的解决方案(js模板+ scala模板) - 在JS关闭/打开时使用正确的模板.那么JS代码的数量可能会增加到60%..
然后我似乎要复制一切,比如有两个不同的应用程序 - 谷歌和人.什么是常见的(仅)是我的数据本身在我的数据库中,我不必复制数据.但是......在那里我们可能会遇到与该数据格式不同的问题(并且很可能是基于json的[因为我不浪费处理器时间来进行表对象转换],而不是基于表的 - NoSQL ..然后我们再次像JS一样来到JS - 就像MongoDB一样,并且本身就JS与Json一起工作得非常好.
然后问,为什么不使用的100%,JS为简单的喜欢的东西:请求-响应,形成一个页面 …
我很想知道如何通过在Actor中模拟一些方法(用模拟的替换真实对象/ actor的方法实现)来测试Akka Actor功能.
我用akka.testkit.TestActorRef;
另外:我试图使用,SpyingProducer但目前尚不清楚如何使用它.(就像我,如果我在其实现中创建了actor,它将与我现在一样).谷歌搜索结果不是很详细.
我用powemockito和java.但是这没关系.我很想知道how to do it in principle 任何语言与任何框架
(所以如果你不知道power/mockito如何工作只是提供你的代码..(请)或完全了解你将如何使用你知道的工具.)
所以,假设我们有一个要测试的Actor:
package example.formock;
import akka.actor.UntypedActor;
public class ToBeTestedActor extends UntypedActor {
@Override
public void onReceive(Object message) throws Exception {
if (message instanceof String) {
getSender().tell( getHelloMessage((String) message), getSelf());
}
}
String getHelloMessage(String initMessage) { // this was created for test purposes (for testing mocking/spy capabilities). Look at the test
return "Hello, …Run Code Online (Sandbox Code Playgroud) 这对我有用(服务器端验证示例):
但是,我决定提出更多问题.
在该示例中,我们使用unique-email指令:
<input type="email" ng-model="userEmail" name="userEmail" required unique-email/>
Run Code Online (Sandbox Code Playgroud)
但是在创建指令时,我们使用uniqueEmail:
app.directive('uniqueEmail', function($http) { ..
Run Code Online (Sandbox Code Playgroud)
为什么?是否以某种方式在名称中命名约定/规则?角度如何知道在哪里看以及如何将它们连接到另一个?
我只是想知道,因为我用<input ... required uniqueEmail它时不起作用.直到我输入"unique-email"
如果我输入相同:
app.directive('unique-email', function($http) {
Run Code Online (Sandbox Code Playgroud)
直到我输入它才会起作用 uniqueEmail
因此,在使用指令和定义它时,没有机会使用一个样式名称.
我有自己的指示: <form-wrapper>
现在这个指令使用自己的内部控制器,使用一些Service(User服务)
像这样:
directives.directive("formWrapper", ['User', function(User) {
return {
...
controller: function($scope, $location, User) {
$scope.fields = User.get( {id: "1"} ); // GET
...
Run Code Online (Sandbox Code Playgroud)
如您所见:我使用硬编码的 Service(User).
问题:我如何将服务作为指令的参数?要像这样使用它:
Service = comesFromArgument
$scope.fields = Service.get( {id: "1"} )
Run Code Online (Sandbox Code Playgroud)
我想如果我将服务名称作为字符串(作为服务名称)传递它将无济于事.传递参数通常发生在link-function控制器中但不在控制器中.
更新(更多解释):
当使用directives.directive("formWrapper", ['User', function(User) {名称'User'导致注入用户服务时,因为这就是IoC在这里工作的方式.它知道这是一项服务.但如果我做了:
<form-wrapper service="User"> // 这就是我要的.
然后,"用户"将只是一个字符串,而不是对用户服务的引用.
W3C指定用户代理必须返回的事件列表及其对应的时序,如果他们想要支持Navigation Timing API.
您可以在此处看到一个列表:http://www.w3.org/TR/navigation-timing/#process
在大多数情况下,了解哪个过程与哪些事件相关.但有一点令我困惑不解是什么之间正在进行的domContentLoadedEventStart和domContentLoadedEventEnd.
这是我到目前为止所理解的,并基于我的反思:
domLoading // UA开始解析文档.domInteractive// UA已完成解析文档.用户可以与页面进行交互.domContentLoaded//文档已完全加载并解析,并且已执行延迟脚本(如果有).(异步脚本,如果有的话,可能会或可能不会执行???)domComplete// DOM树是完全构建的.异步脚本(如果有)已执行.loadEventEnd// UA有一个完整的页面.所有资源,如图像,swf等,都已加载.domContentLoaded通过了解触发事件#4(domComplete)但未触发先前事件的内容,应该能够推断出阶段#3()之后发生的事情.
因此,人们会认为"异步脚本(如果有的话,已执行")意味着异步脚本在阶段#3之后但在事件#4之前执行.但根据我的测试,这不是发生的事情,除非我的测试是错误的.(我尝试复制我的测试JSFiddle,但我无法使deferred/async脚本工作,因为无法在外部脚本上添加属性.)
所以我的问题是:在domContentLoadedEventStart和之间发生了什么过程domContentLoadedEventEnd?
我使用最后稳定的SBT和Scala 2.10以及IntelliJ IDEA 12.x中的最后一个Scala插件.并且有非常简单的测试Scala项目.
我有specs2测试,我想从哪里开始我的调试.有几个断点,我期待越过线路(从一个断点到另一个断点 - 在我的测试和我的代码中),而是:debbuger到达库类中的某个地方,停在那里,给我一些奇怪的消息来源.
这是可以重复的,我必须在下一个箭头按钮(在调试面板上)点击2,3,有时5次到达下一个断点(在测试或代码中).
我使用SBT'test-compile'动作运行我的测试,就像IntelliJ弹出窗口所示.
Aldo我发现了Scala的这个调试设置("不要进入特定的Scala类").但是我选中了这个复选框.
我在IntelliJ IDEA网站上发布了一个问题.