小编And*_*rea的帖子

将原型添加到对象文字中

比方说son,我有一些对象,我想从另一个对象继承father.

当然我可以为父亲创建一个构造函数

Father = function() {
  this.firstProperty = someValue;
  this.secondProperty = someOtherValue;
}
Run Code Online (Sandbox Code Playgroud)

然后使用

var son = new Father();
son.thirdProperty = yetAnotherValue;
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的.由于son将具有许多属性,因此将子声明为对象文字将更具可读性.但后来我不知道如何设置它的原型.

做点什么

var father = {
  firstProperty: someValue;
  secondProperty: someOtherValue;
};
var son = {
  thirdProperty: yetAnotherValue
};
son.constructor.prototype = father;
Run Code Online (Sandbox Code Playgroud)

不会起作用,因为原型链似乎是隐藏的而不关心构造函数.prototype的变化.

我想我可以__proto__在Firefox中使用该属性,比如

var father = {
  firstProperty: someValue;
  secondProperty: someOtherValue;
};
var son = {
  thirdProperty: yetAnotherValue
  __proto__: father
};
son.constructor.prototype = father;
Run Code Online (Sandbox Code Playgroud)

但是,据我所知,这不是该语言的标准功能,最好不要直接使用它.

有没有办法为对象文字指定原型?

javascript oop prototype-programming

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

Django:更改测试的媒体根

我正在尝试为 Django 应用程序编写一些测试,涉及文件上传。为此,我想MEDIA_ROOT暂时将其更改为“myproject/fixtures/test_media/”。由于某种原因,这似乎阻止了 Django 找到固定装置。

我的测试用例看起来像

from django.conf import settings

class TestMedia(TestCase):
    fixtures = ['fixtures/test_data.json']

    def setUp(self):
        settings.MEDIA_ROOT = ''.join(
            [settings.PROJECT_PATH, '/fixtures/test_media/'])

    def test_photo_size(self):
        pass # Actually do something with the media files
Run Code Online (Sandbox Code Playgroud)

由于某种原因,Django 无法加载固定装置,因此所有测试都会失败

安装固定装置“fixtures/test_data.json”时出现问题:回溯(最近一次调用最后一次)...

我究竟做错了什么?

django unit-testing django-testing

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

多方法的一般语法

如果这个问题很简单,我会道歉,但一些谷歌搜索并没有把我带到任何地方.defmulti和的一般语法是defmethod什么?我可以编写简单的多方法,但我不知道在哪里可以放置文档字符串,前置和后置条件,元数据等.

我实际上对ClojureScript比对Clojure更感兴趣,所以如果两者之间存在差异,请告诉我.

clojure multimethod clojurescript

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

在Clojure/ClojureScript中处理事件驱动的编程

我正在尝试了解如何在ClojureScript中建模事件.在JavaScript中设计事件队列很容易.您只需保留一个(可变的)函数数组,并提供辅助函数来添加或删除数组中的回调.当您触发事件时,只需遍历数组中列出的所有回调并一个接一个地调用它们.

这种范式远非功能性风格 - 例如,除非它们有副作用,否则触发回调没有意义.此外,它使用可变数组实现.在我看来,在ClojureScript中,人们需要能够做事件驱动的编程来做任何有用的事情.现在,我知道Google Closure已经实现了一个事件库,但我的问题是关于本地实现它.

由于所有基本的Clojure/ClojureScript数据类型都是不可变的,因此实现这种机制的惯用方法是什么?改变参考?求助于来自主机的可变数据结构(Java resp JavaScript)?

如果我理解正确,代理可能是Clojure中的正确工具,但我发现它们目前尚未在ClojureScript中实现.

events clojure javascript-events clojurescript

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

从Groovy的时间戳获取日期

尽管看起来微不足道,但我找不到将Grooty中的Unix时间戳转换为Date对象的方法.

让我试试1280512800,应该成为Fri, 30 Jul 2010 18:00:00 GMT

我的第一次尝试是

new Date(1280512800)
// wrong, becomes Thu Jan 15 20:41:52 CET 1970
Run Code Online (Sandbox Code Playgroud)

然后我读到Java时间戳使用毫秒,因此我应该使用

new Date((long)1280512800 * 1000)
// the cast to long is irrelevant in Groovy, in any case I get
// Thu Jan 08 03:09:05 CET 1970
Run Code Online (Sandbox Code Playgroud)

将时间戳转换为日期的正确方法是什么?如果我想指定工作时区怎么办?

groovy timestamp date

7
推荐指数
1
解决办法
2万
查看次数

在Ubuntu 12.04上安装Gradle

我想在Ubuntu 12.04上安装Gradle.起初我在存储库中使用了包,但是在遇到这个 错误后,我发现我最好使用更新的版本.

我已经删除了内置包并通过将官方1.0软件包复制到/usr/local/share/目录并添加了一个软链接/usr/local/bin/gradle/来安装gradle /usr/local/share/gradle-1.0/bin/gradle.

它似乎工作,但我遇到了类路径问题.也就是说,一旦我尝试建立一个项目,我就得到了

Exception executing org.gradle.api.internal.tasks.compile.ApiGroovyCompiler@1ab95774 in compiler daemon: java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileGroovy'.
> org/apache/commons/cli/ParseException
Run Code Online (Sandbox Code Playgroud)

现在locate commons-cli.jar给我

/usr/share/groovy/lib/commons-cli.jar
/usr/share/java/commons-cli.jar
Run Code Online (Sandbox Code Playgroud)

显然这两个JAR不在类路径上.通常我会运行一个Java可执行文件,其中包含-cp向类路径添加内容的选项.但是gradle可执行文件本身是一个脚本,它在调用Java之前自己设置类路径.

安装Gradle并使其在类路径上找到所需的所有内容的正确方法是什么?

请注意,我是JVM世界的新手,所以不要以为我熟悉任何东西:-)

installation ubuntu classpath gradle ubuntu-12.04

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

Git-跟踪远程分支

我是Mercurial用户,我对远程分支的行为感到困惑.我有一个远程分支origin/dev,我想在本地分支上复制它dev.我想要的是:

  • 每当我git pull,变化origin/dev被合并到dev
  • 每当我git push,变化dev被合并到origin/dev

所以我创建了一个跟踪分支

git branch --track dev origin/dev
Run Code Online (Sandbox Code Playgroud)

据我所知,这应该完全符合我的需要.

不过,我正在开发一个功能分支并发布了一个git pull.当我后来发出的时候,git checkout dev我收到了令人费解的消息

您的分支在2个提交后面的'origin/master_dev'后面,可以快进.

所以看来我的本地分支毕竟没有更新.每当我拉动并且我目前不在那个分支时,有没有办法让分支更新到远程分支?如果没有,我是否正确git merge分支开发(没有任何参数)足以恢复情况?

git branch

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

在Scala中键入伴随对象

我有一个类及其伴随对象,它们共同具有一些可重用的功能.我已将伴随对象的功能封装成特征,所以现在的情况就像

class Foo {
  import Foo._

  def foo: Quux = bar(this)
}

trait Bar {
  def bar(f: Foo): Quux = frobnicate(f)
}

object Foo extends Bar
Run Code Online (Sandbox Code Playgroud)

既然Foo.foo是一种可重用的方法,我想把它放到它的特性中.

但我必须找到一种方法来告诉类型检查器,虽然bar不是类的方法Foo,但它将在范围内,因为从伴随对象导入.我想我需要能够键入类的伴随对象.

有类似的东西吗?

types scala companion-object

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

Play中的装置!2为Scala

我正在尝试在Play中进行一些集成测试!2用于Scala应用程序.为此,我需要在每次测试之前加载一些灯具以使DB处于已知状态.

目前,我只是调用一个执行一堆Squeryl语句来加载数据的方法.但是声明性地声明灯具,无论是使用Scala DSL还是使用JSON或YAML等语言,都更容易理解.

这个 Java应用程序示例中,我看到夹具是从YAML文件加载的,但是等效的Scala应用程序正在进行manula加载,就像我现在正在做的那样.

我还发现这个项目没有很好的记录,而且看起来比我想要的要复杂得多 - 我甚至都不清楚夹具数据的实际声明位置.

是否还有其他选项可以在Play中加载灯具!应用?

testing scala fixtures playframework playframework-2.0

7
推荐指数
2
解决办法
2953
查看次数

Clojure系列的操作

我对Clojure很陌生,虽然我熟悉函数式语言,主要是Scala.

我想弄清楚在Clojure中对集合进行操作的惯用方法是什么.我特别感到困惑的是函数的行为,比如map.

在Scala中,非常注意制作,以便map始终返回相同类型的原始集合的集合,只要这有意义:

List(1, 2, 3) map (2 *) == List(2, 4, 6)
Set(1, 2, 3) map (2 *) == Set(2, 4, 6)
Vector(1, 2, 3) map (2 *) == Vector(2, 4, 6)
Run Code Online (Sandbox Code Playgroud)

相反,Clojure中,据我了解,大部分的操作,例如mapfilter懒惰,甚至当上跃跃欲试的数据结构进行调用.这有着奇怪的结果

(map #(* 2 %) [1 2 3])
Run Code Online (Sandbox Code Playgroud)

懒惰列表而不是矢量.

虽然我更喜欢懒惰的操作,但我发现上述情况令人困惑.实际上,向量保证了列表没有的某些性能特征.

假设我使用上面的结果并追加到它的末尾.如果我理解正确,结果不会被评估,直到我尝试追加它,然后它被评估,我得到一个列表而不是一个向量; 所以我必须遍历它以追加到最后.当然我之后可以将它变成一个矢量,但这会变得混乱而且可以被忽略.

如果我理解正确,map是多态的并且实现它不会是一个问题,因此它返回向量上的向量,列表上的列表,流上的流(这次使用惰性语义)等等.我想我对Clojure及其成语的基本设计缺失了一些东西.

对clojure数据结构的基本操作不会预先反映结构的原因是什么?

collections clojure lazy-evaluation

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