在Real World Haskell的第15章中,定义了一个类型类:
class (Monad m) => MonadSupply s m | m -> s where
Run Code Online (Sandbox Code Playgroud)
稍后几段,它说因为上下文而不需要定义>> =和return.但是没有进一步解释上下文意味着什么.
如果只有'm'是Monad的实例,编译器如何知道MonadSupply是Monad的实例?
我正在编写Eclipse插件,我试图创建一个方法,在ArrayList <\ Class <\?>>中返回工作空间中的所有类(我添加了"\"以包含通用括号,因为html不会让我这样做吧.
这是我的代码:
private ArrayList<Class<?>> getAllClasses() throws JavaModelException {
ArrayList<Class<?>> classList = new ArrayList<Class<?>>();
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot root = workspace.getRoot();
IProject[] projects = root.getProjects();
for (IProject project : projects) {
IJavaProject javaProject = JavaCore.create(project);
IPackageFragment[] packages = javaProject.getPackageFragments();
for (IPackageFragment myPackage : packages) {
IClassFile[] classes = myPackage.getClassFiles();
for (IClassFile myClass : classes) {
classList.add(myClass.getClass());
}
}
}
return classList;
}
Run Code Online (Sandbox Code Playgroud)
然而,这似乎不起作用.我有一些印刷线,我发现它还包括不相关的类(即来自Java\jre6\lib\rt.jar的类).有什么建议?
我正在写一个Firefox扩展.我试图将它限制为只有XUL + Javascript(没有XPCOM).当我得到一个mouseover
HTML元素的事件时,我需要在windows坐标系中获取它的边界框(即内置的XUL文档browser.xul).
显而易见的地方是在mouseover事件处理程序中放置这样的东西:
var rect = e.target.getBoundingClientRect();
Run Code Online (Sandbox Code Playgroud)
这很棒,但是它给了我HTML文档坐标系中的矩形,它相对于HTML绘图区域的左上角.我想在这个图像附近使用panel.openPopup()显示一个xul:panel元素(但不使用其中一个预定义的弹出位置),所以我需要翻译坐标.
我尝试过以下(在XUL dom中)来获取偏移量来进行翻译,它适用于某些网站,但不是全部,并且似乎没有考虑到侧边栏所需的x翻译.
var appcontent = document.getElementById("appcontent");
if (appcontent) {
chromeOffsetX = r.left;
chromeOffsetY = r.top;
}
Run Code Online (Sandbox Code Playgroud)
那么,最好的方法是什么?
注意:对于IE扩展,我会使用(并使用过)IDisplayServices :: TransformRect() - 对于Firefox有类似的东西吗?
现在有赏金!
我想创建一个数组dtype=np.object
,其中每个元素都是一个数字类型的数组,例如int或float.例如:
>>> a = np.array([1,2,3])
>>> b = np.empty(3,dtype=np.object)
>>> b[0] = a
>>> b[1] = a
>>> b[2] = a
Run Code Online (Sandbox Code Playgroud)
创造我想要的东西:
>>> print b.dtype
object
>>> print b.shape
(3,)
>>> print b[0].dtype
int64
Run Code Online (Sandbox Code Playgroud)
但我想知道是否没有办法在一行中写入第3行到第6行(特别是因为我可能想要连接100个数组).我试过了
>>> b = np.array([a,a,a],dtype=np.object)
Run Code Online (Sandbox Code Playgroud)
但这实际上将所有元素转换为np.object:
>>> print b.dtype
object
>>> print b.shape
(3,)
>>> print b[0].dtype
object
Run Code Online (Sandbox Code Playgroud)
有没有人有任何想法如何避免这种情况?
我需要运行的python脚本仅从作为命令行参数传递的文件中获取输入,如下所示:
$ markdown.py input_file
Run Code Online (Sandbox Code Playgroud)
有没有办法让它接受来自STDIN的输入?我希望能够通过Bash完成此操作,而无需显着修改python脚本:
$ echo "Some text here" | markdown.py
Run Code Online (Sandbox Code Playgroud)
如果我必须修改Python脚本,我该怎么做呢?
(编辑:这是解析命令行选项的脚本.)
假设我有这样的函数:
public void AddEntry(Entry entry)
{
if (entry.Size < 0)
throw new ArgumentException("Entry size must be greater than zero");
DB.Entries.Add(entry);
}
Run Code Online (Sandbox Code Playgroud)
并进行相应的单元测试:
[TestMethod]
[ExpectedException(typeof(ArgumentException), "Entry size must be greater than zero")]
public void AddEntry_TermSizeLessThanZero_ThrowException()
{
Entry e = new Entry(-5);
AddEntry(e);
}
Run Code Online (Sandbox Code Playgroud)
然后我重构验证码:
public void AddEntry(Entry entry)
{
Validate(entry);
DB.Entries.Add(entry);
}
public void Validate(Entry entry)
{
if (entry.Size < 0)
throw new ArgumentException("Entry size must be greater than zero");
}
Run Code Online (Sandbox Code Playgroud)
单元测试不再描述验证代码.
在这种情况下,最好的做法是什么?我是否只是通过AddEntry离开Validate()进行测试?
编辑:澄清一下,假设我有理由将折射代码公开(在这种情况下有点做作),我想复制测试代码是否彻底?
目前是否有一个插件可以在rails开发人员身上使用macvim/gvim/vim,它允许你快速获取一段代码并从中创建一部分代码?我知道TextMate这样做了,想到有人已将它移植到vim也.
我想知道第8行的内容是什么.
# Iterators
class Fibs:
def __init__(self):
self.a = 0
self.b = 1
def next(self):
self.a, self.b = self.b, self.a+self.b # <--- here
return self.a
def __iter__(self):
return self
fibs = Fibs()
for f in fibs:
if f > 1000:
print f
break
Run Code Online (Sandbox Code Playgroud)
程序的其余部分我真的不需要太多解释.我不确定是什么分配给了什么.
我想使用单例模式来保存我的Android应用程序的数据库和一些其他数据/方法.
我意识到有很多理由反对单身人士,但对于这种情况我想使用它.
我已经对UIApplication进行了细分,并在其中创建了一个名为MyAppData的数据类.
MyAppData需要访问SQLite数据库.
当我创建数据库时,我需要传递一个上下文.我可以传递应用程序上下文,但它不会直接与MyAppData相关.
我不知道这是否会导致我的代码出现问题.
所以我的想法是让MyAppdata扩展android.content.ContextWrapper.我认为我不应该扩展Activity,因为它实际上不是一个活动,它是一个带有访问数据库方法的数据类.
我想知道我是否扩展了ContextWrapper会不会在我遗漏的代码中有一些深层的东西会导致很大的问题(内存泄漏等).
这可能不是理想的方法(我考虑过其他方案),但我的目标是:
在UIApplication中有一个单例类,可以封装数据库,并可以从我的应用程序中的任何活动轻松检索.
提前感谢您的建议/警告/建议.
在我的Entity Framework v4项目中,我有一个包含两列的表,这些列由数据库计算(通过触发器等).为了让EF正确地将记录插入到表中,我必须在EF存储模型(StoreGeneratedPattern属性)中手动将列标记为"已计算",这是设计者不支持的 - 所以我必须制作手动编辑.EDMX文件中的XML.
问题是,每当我的数据库架构发生变化,并且我需要更新项目中的存储模型时,"更新模型向导"将覆盖.EDMX的整个存储模型部分,从而消除了我的手动更改.这意味着我必须保留这些更改的特殊列表,并在每次更新时手动重新应用它们!对于上帝的爱,这必须是EF中最愚蠢的故障之一.
无论如何,我对蜂巢的问题是这样的...有没有办法阻止存储模型覆盖?有没有办法标记数据库中的列,以便EF会自动将它们标记为计算?作为最后的手段,是否有一些非常简单的XML工具/技术可以在每次刷新后自动为我应用更改?
谢谢,哦,我学习StackOverflow贡献者,以缓解我的痛苦,并帮助我解决这个问题,即使我还没有在网站上的任何状态.总有一天,当我有4位数的声望时,我会记住你.
布赖恩
更新
内部人员告诉我,一个解决方案可能是查看"Designer Power Pack"(下面的链接),它允许您自定义存储模型的生成.到目前为止,我只是略读了这些信息,但在我看来,可能会有一两天的学习曲线来解决这个问题.有没有人对Designer Power Pack或任何其他想法有任何经验?
再次感谢,Brian