小编Rob*_*vey的帖子

将2个javascript对象连接在一起的正确方法是什么?

我目前面临一个难题:将两个javascript对象连接在一起的正确方法是什么?

想象一下像文本编辑器这样的应用程序,它有几个不同的文件.我有一些HTML页面代表笔记本的视图.我有一个文件notebook.js,其中包含NotebookController和Notebook View的类定义.

NotebookControler对象负责在笔记本上执行业务逻辑,如"保存笔记本","加载笔记本","新笔记本".NotebookView负责管理用于演示的HTML.它做低级别的东西,如"获取/设置笔记本电脑主体""获取/设置笔记本名称".它还侦听DOM事件(onClick)并触发业务事件(saveNotebook).这是我对被动视图模式的尝试.

我希望我的javascript客户端代码是面向对象的,分离的关注点和单元可测试的.我想用模拟NotebookView测试NotebookController,反之亦然.这意味着我不能只在NotebookController中实例化NotebookView.我也是

  • 在我的notebook.js中放入一些逻辑,将2连接在一起
  • 在我的应用程序中有一个全局函数,它知道实例化其中一个并将它们连接在一起
  • 使用依赖注入,可以是本土的,也可以是SquirrelIoc

在Java中,选择是自然的:使用Spring.但这似乎不是JavaScript-y.什么是正确的做法?

javascript dependency-injection passive-view

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

MEF与PRISM.有什么不同?将来会支持什么?

我想要创建的是一个Silverlight应用程序,其中包含一些选项卡/模块,这些选项卡/模块都将是单独的DLL.

我看到PRISM有Shell/Module概念,似乎是针对UI做的,我找到了一个很好的演示(展示了如何搜索digg/twitter).

但听起来MEF将包含在VS2010中,所以我想选择这个选项.

谁能以某种方式清楚地解释这些差异?(我不是高级程序员)

prism mef

16
推荐指数
3
解决办法
2万
查看次数

是否有可能与F#中的分解序列匹配?

我似乎记得F#的旧版本允许在匹配序列时进行结构分解,就像列表一样.有没有办法在保持序列延迟的同时使用列表语法?我希望避免大量调用Seq.head和Seq.skip 1.

我希望有类似的东西:

let decomposable (xs:seq<'a>) =
   match xs with
   | h :: t -> true
   | _ -> false
seq{ 1..100 } |> decomposable
Run Code Online (Sandbox Code Playgroud)

但这仅处理列表并在使用序列时给出类型错误.当使用List.of_seq时,它似乎会评估序列中的所有元素,即使它是无限的.

f# list sequence pattern-matching lazy-evaluation

16
推荐指数
2
解决办法
5999
查看次数

如何查询X11显示分辨率?

这似乎是一个简单的问题,但我找不到答案:你如何查询(通过X11)什么监视器存在及其解决方案?

linux x11

16
推荐指数
4
解决办法
2万
查看次数

如何为Types创建扩展方法

我正在编写一个扩展方法来解析任何给定类型的JSON字符串.我想在类型上使用方法而不是像我们已经知道的许多示例那样的实例,但我有点觉得Visual Studio不支持它.有人可以在这里启发我吗?以下是方法:

public static T ParseJson<T>(this T t, string str) where T: Type
{
    if (string.IsNullOrEmpty(str)) return null;
    var serializer = new JavaScriptSerializer();
    var obj = serializer.Deserialize<T>(str);
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

我想以这种方式调用方法:

var instance = MyClass.ParseJson(text);
Run Code Online (Sandbox Code Playgroud)

谢谢

c# extension-methods

16
推荐指数
2
解决办法
9276
查看次数

使用Lambda Expression的IComparer

 class p {
     public string Name { get; set; }
     public int Age { get; set; }
 };

 static List<p> ll = new List<p>
 {
     new p{Name="Jabc",Age=53},new p{Name="Mdef",Age=20},
     new p{Name="Exab",Age=45},new p{Name="G123",Age=19}
 };
 protected static void SortList()
 {
     IComparer<p> mycomp = (x, y) => x.Name.CompareTo(y.Name);  <==(Line 1)
     ll.Sort((x, y) => x.Name.CompareTo(y.Name));<==(Line 2)
 }
Run Code Online (Sandbox Code Playgroud)

这里List.sort需要一个IComparer<p>as参数.并且它与lambda一起使用,如第2行所示.但是当我尝试按照第1行的方式执行时,我收到此错误:

无法将lambda表达式转换为System.Collections.Generic.IComparer类型,因为它不是委托类型

我调查了很长一段时间,但我仍然不明白.也许我对IComparer的理解不是很好.可以有人帮我一把吗?

c#-3.0

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

如何杀死我自己的活动 - 艰难的方式

所以我有我的活动,按下"退出"按钮我调用Activity.finish().这有效地关闭了我的申请.

问题:我的应用程序的Dalvik过程仍然像背景中的僵尸一样闲逛.看起来这是正常的,因为其他应用程序也这样做.甚至hello-world示例也在内存中徘徊.

我可以忍受这个,但不幸的是这种行为使我的应用程序的开发变得痛苦.我有一个连接到我的Activity的远程服务,并且在我的Activity卸载之前这个服务不会卸载(正如它所说的那样).

一切都以某种方式保持活着,没有任何理由.

我怎样才能真正从记忆中删除我的活动?

我正在寻找像Activity.finish_and_kill_my_process_please()调用或类似的东西.

android kill process android-activity

16
推荐指数
4
解决办法
4万
查看次数

比较C中的浮点数

我有一个double打印出来0.000000,我试图比较它0.0f,但没有成功.为什么这里有区别?什么是最可靠的方法来确定你的双倍是零?

c floating-point comparison zero

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

当KISS和DRY碰撞时

我是DRY和KISS原则的追随者,但上周我有一个案例,两者似乎互相矛盾:

对于我正在做的应用程序,我必须实现一个循环,执行以下操作:

  1. 迭代类型A列表的元素
  2. 将类型A的元素转换为类型B并将它们插入到类型B的列表中

这是一个例子:

for (A a : listOfA) {
    listOfB.add(BFactory.convertFromAToB(a));
}
Run Code Online (Sandbox Code Playgroud)

在代码中,我必须做大约4次,将类型(例如D,E等)转换为另一种类型.我可能无法更改我要转换的类型,因为它们是我们必须在app中使用的第三方类型.

所以我们有:

for (A a : listOfA) {
    listOfB.add(BFactory.convertFromAToB(a));
}

for (C a : listOfC) {
    listOfB.add(DFactory.convertFromCToD(c));
}

...
Run Code Online (Sandbox Code Playgroud)

所以,为了不违反干,我提出了一个通用的解决方案:

private interface Function<S, T> {
  T apply(S s);
}

public <S, T> void convertAndCopy(List<S> src, List<T> dst, Function<S, T> f) {
    for (S s : src) {
      dst.add(f.apply(s));
    }
}
Run Code Online (Sandbox Code Playgroud)

电话看起来像这样:

convertAndCopy(listOfA, listOfB, new Function<A, B>() {
    A apply(B b) {
        return CFactory.convertFromBToC(b); …
Run Code Online (Sandbox Code Playgroud)

java dry

16
推荐指数
3
解决办法
4627
查看次数

Python:掩盖列表的优雅而有效的方法

例:

from __future__ import division
import numpy as np

n = 8
"""masking lists"""
lst = range(n)
print lst

# the mask (filter)
msk = [(el>3) and (el<=6) for el in lst]
print msk

# use of the mask
print [lst[i] for i in xrange(len(lst)) if msk[i]]

"""masking arrays"""
ary = np.arange(n)
print ary

# the mask (filter)
msk = (ary>3)&(ary<=6)
print msk

# use of the mask
print ary[msk]                          # very elegant  
Run Code Online (Sandbox Code Playgroud)

结果是:

>>> 
[0, 1, 2, 3, 4, …
Run Code Online (Sandbox Code Playgroud)

python arrays list masking

16
推荐指数
3
解决办法
4万
查看次数