<%# Flash-based notifications %>
<% if flash[:error].present? or flash[:notice].present? %>
<div class="messages <%= flash[:error] ? 'error' : 'notice' %>">
<ul id="feedback">
<% if flash[:error].present? %>
<li><%= flash[:error] %></li>
<% end %>
<% if flash[:notice].present? %>
<li><%= flash[:notice] %></li>
<% end %>
</ul>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,尽管看起来很简单,但我尝试从局部内部的闪存中读取产生此错误,因为闪存设置为nil.我需要手动初始化它还是什么?
这是Rails 3.1.0.该错误位于代码段的第2行,它尝试访问该代码段flash[:error].
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.[]
Run Code Online (Sandbox Code Playgroud)
我肯定错过了什么.我绝对不会在任何地方压倒它.
我正在使用Emacs Lisp,但是已经cl加载了包,用于一些常见的lisp功能.
我有一个包含多达50K条目的哈希表,整数键映射到三元组,类似这样(但在实际的lisp中):
{
8 => '(9 300 12)
27 => '(5 125 9)
100 => '(10 242 14)
}
Run Code Online (Sandbox Code Playgroud)
三元组中的第二个值是在构建散列表的复杂算法期间计算的分数.我需要收集一个常规的lisp列表,其中包含哈希中的所有键,按得分排序(即由值的cadr排序的所有键).
所以对于上面的内容,我需要这个列表:
'(27 100 8)
Run Code Online (Sandbox Code Playgroud)
我目前正在做两个阶段,感觉效率低于它需要的阶段.
有没有办法做到这一点?
我当前的解决方案用于maphash将密钥和值收集到两个新列表中,然后sort以正常方式执行,参考谓词中的分数列表.但是,我觉得我可以将收集和排序结合起来.
编辑| 我也不依赖于使用哈希表,尽管我确实需要对整数键的持续访问时间,这些键不是线性间隔的.
编辑2 | 看起来实现二叉树排序可能会起作用,树中的标签是分数,值是键......这样我就可以在哈希映射时进行排序.
...继续阅读有关排序算法的维基百科页面
这适用于Mac,但它也可能适用于Linux,所以我已经标记了它.
我正在通过目录递归并获取具有文件系统属性的树.
然后每当窗口重新聚焦时,我再次(再次)再次递归.当我读取目录时,我正在寻找任何已修改并需要对其进行操作的文件.
想到的显而易见的事情是比较每个文件的修改日期,但是我的单元测试证明这不可靠,因为测试本身在不到一秒的时间内执行...结果是我的测试更改的文件被视为未经修改(因为它只精确到1秒).
到目前为止,我的修复方法还是比较了文件大小,但这样做的风险是,如果文件被更改,并且结果大小相同,它也将无法检测到.
远非散列每个文件,这是不可行的(在递归整个目录树时太慢),我还可以使用HFS/HFS +提供的其他东西吗?喜欢附加到文件的某种版本号/修改计数?我担心没有,虽然实际上文件的边缘情况变化与我的单元测试一样快,但是在实际用例中不太可能是一个问题.
我确定这是正常的,我只是误解了一些东西,但是由于NSScrollView从窗口底部稍微插入了一个(而不是占据整个高度),周围出现了蓝色边框.
我已经设置NSNoBorder了滚动视图,所以这必须是别的东西.
[scrollView setBorderType:NSNoBorder];
Run Code Online (Sandbox Code Playgroud)
任何指针都将非常感激.我希望边界消失,因为它破坏了应用程序的外观,只是看起来很破碎.
我认为这是滚动视图.它内部的视图是一个NSOutlineView,所以也许它就是这样的东西?

我只是花了很长时间试图弄清楚为什么我的规范单独通过,但是当一起运行控制器和库测试时,某些规范神秘地失败了。罪魁祸首是这样的:
在一项规范中:
describe SomeThing do
CONSTANT_VALUE = "a value"
# ... examples etc ...
end
Run Code Online (Sandbox Code Playgroud)
在另一篇文章中:
describe AnotherThing do
CONSTANT_VALUE = "a different value"
# ... the rest is history
end
Run Code Online (Sandbox Code Playgroud)
我分配给这些常量的值在我的规格之间泄漏并导致意外的行为。我应该使用let块来定义常量等吗?或者是其他东西?
标题可能不能很好地描述这个问题.许多基于GUI的编辑器允许您按下组合键,然后开始键入文件名(在任何目录中,在任何目录中),当您键入时,列表将实时过滤掉与该模式匹配的所有文件.如果按Enter键,将打开当前突出显示的文件,或者如果按下向上或向下箭头,则可以更改选择.例如,在TextMate和Sublime Text 2(在OS X上),这是通过按CMD + T来实现的.

现在我知道find-dired并且find-grep在Emacs中,但是还有什么其他可用的更快一点吗?dired的烦人之处在于你必须按Enter键并执行搜索才能查看文件名是否正确.如果您知道文件名,这是可以的,但是当您基于有根据的猜测时,这不是很好.似乎emacs可能适合.将目录设置为索引(仅一次),然后在搜索时使用基数树搜索过滤索引等,使用拆分窗口显示文件并响应向上和向下箭头以调整选择.
还有什么吗?:)
到目前为止,我的知识水平是这样的,我已经完成了The Little Schemer而没有问题,而我目前通过The Seasoned Schemer获得70%的成绩.我在脑海中想到了一些项目的想法,我希望通过这些项目来获得与Scheme一起工作的实际经验,但是(也许是因为我在整个职业生涯中主要使用OO语言)我仍然想知道如何我们可以用函数式语言(如Scheme)解决OO语言的一些相当基本的问题.
我不是将所有问题都推到一个stackoverflow问题中,而是随着时间的推移逐渐将它们剔除,并假设这些部分将落实到位,所以我实际上不需要其他问题的答案.
很明显,Scheme的东西就是列表.列表和列表列表.我习惯于能够存储包含可以快速检索的"属性"的列表(即散列),并且可以嵌套在另一个内部.
举个例子,在文件系统中传递一个文件和目录列表,递归地,如何在Scheme中接近这样的东西?我想你可以传递一个表单的数据结构:
'(("foo" (("bar.txt")
("zip.txt")
("button.txt")))
("other.txt")
("one-more" (("time.txt"))))
Run Code Online (Sandbox Code Playgroud)
其中每个节点表示为列表的汽车,其子节点表示为其cdr的汽车中包含的另一个列表,因此上面的树结构为:
foo/
bar.txt
zip.txt
button.txt
other.txt
one-more/
time.txt
Run Code Online (Sandbox Code Playgroud)
或者也许会传递一个接受访问者的迭代器函数,而不是进行某种深树遍历?(在知道何时切换目录方面,并不完全确定外观如何).
当涉及到这类问题时,是否存在一般模式,而不仅仅是目录树,而是树结构(附带元数据)?
与面向对象的等价物相比,这不可避免地完成得非常繁琐吗?
我无法理解我需要采用的方法来折叠函数列表并使用特定参数调用它们.
这是我假设的工作方式.我已经尝试了各种变化,使用eval等任何指针?
(mapcar (lambda (fn) (fn 'utf-8))
(list #'set-terminal-coding-system
#'set-keyboard-coding-system
#'prefer-coding-system))
Run Code Online (Sandbox Code Playgroud)
当我运行这个时,我得到"符号的函数定义是无效的:fn".
编辑| 好的,这样可行,但是apply当上面的例子使用#'function-namesynax 传递函数时,需要使用它似乎很奇怪.
(mapcar (lambda (fn) (apply fn '(utf-8)))
'(set-terminal-coding-system
set-keyboard-coding-system
prefer-coding-system))
Run Code Online (Sandbox Code Playgroud) 我已经使用lisp-family语言多年了,感觉我对它们有很好的把握.我现在正在编写自己的lisp(当然是时尚),但几乎完全避免重新实现Scheme,Common Lisp和朋友使用的相同模式.我总是发现奇怪的是所有的变种一个特别的事情let(letrec,flet,labels,let*...).
在一个"没有遗留下来的遗产"中表示,我希望能够写出如下内容:
(let ((x 7)
(y 8)
(z (* x y)))
(str "x * y * z = " (* x y z)))
Run Code Online (Sandbox Code Playgroud)
同样我希望能够写:
(let ((odd? (lambda (n) (if (zero? n) false (even? (dec n)))))
(even? (lambda (n) (if (zero? n) true (odd? (dec n)))))
(odd? 7))
Run Code Online (Sandbox Code Playgroud)
我可以通过在lambda体内使用define来非常有效地实现这两种变体.请原谅clojure-scheme-hybrid代码:
(defmacro let (bindings & body)
`((lambda ()
,@(map (lambda (name-value) (cons 'define name-value)) bindings)
,@body)))
Run Code Online (Sandbox Code Playgroud)
因为这只是在lambda体内的封闭环境中引入绑定,所以相互递归可以起作用,变量可以依赖于先前定义的存在.类似地,因为lambda关闭了创建它的环境,所以(define x expression) (define y …
如何在这样的关系中避免内存泄漏?
@class Node;
@interface Node : NSObject {
Node *parent;
Node *child;
id object;
}
-(id)initWithObject:(id)anObject;
-(id)object;
-(void)setChild:(Node *)aNode;
-(void)setParent:(Node *)aNode;
@end
@implementation Node
-(id)initWithObject:(id)anObject {
if (self = [self init]) {
object = [anObject retain];
}
return self;
}
-(id)object {
return object;
}
-(void)setParent:(Node *)aNode {
[parent release];
parent = [aNode retain];
}
-(void)setChild:(Node *)aNode {
[child release];
child = [aNode retain];
[child setParent:self];
}
-(void)dealloc {
[child release];
[parent release];
[super dealloc];
}
@end
Run Code Online (Sandbox Code Playgroud)
Node *root = …Run Code Online (Sandbox Code Playgroud) lisp ×3
elisp ×2
emacs ×2
macos ×2
objective-c ×2
scheme ×2
cocoa ×1
file-io ×1
filesystems ×1
linux ×1
nsscrollview ×1
rspec ×1
rspec2 ×1
ruby ×1