我一直看到在应用程序开发的讨论中提到的"bootstrapping".它似乎既广泛又重要,但我还没有看到一个关于实际引导的错误解释; 相反,似乎每个人都应该知道这意味着什么.不过,我没有.我可以说,它与启动时应用程序所需的初始化任务有关,但我可能完全错了.任何人都可以帮我理解这个想法吗?
我刚刚开始通过SICP(我自己;这不适合一个班级),我已经在练习1.6中苦苦挣扎了几天,我似乎无法弄明白.这是Alyssa重新定义if的方式cond,如下所示:
(define (new-if predicate then-clause else-clause)
(cond (predicate then-clause)
(else else-clause))
Run Code Online (Sandbox Code Playgroud)
她在一些简单的情况下成功测试它,然后用它来重新编写平方根程序(它工作得很好if):
(define (sqrt-iter guess x)
(new-if (good-enough? guess x)
guess
(sqrt-iter (improve guess x)
x)))
Run Code Online (Sandbox Code Playgroud)
然后问题是:"当Alyssa试图用它来计算平方根时会发生什么?解释." [如果有必要,我很高兴能重现其他程序(good-enough?,improve,等),只是让我知道.]
现在,我知道会发生什么:它永远不会返回一个值,这意味着程序无限地递归.我无法解释为什么会这样.无论之间存在什么微妙的差异,if并且new-if正在逃避我.任何和所有帮助非常感谢.
tl; dr:我怎么能告诉Swift我的子类属于覆盖MyViewController的view属性UIView?
我非常喜欢UIView为UIViewController视图提供子类.例如:
// MyView --------------------------------------------------------
@interface MyView: UIView
@property (nonatomic, strong) UITableView *tableView;
@end
@implementation MyView
- (instancetype)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
_tableView = [[UITableView alloc] initWithFrame:frame];
}
return self;
}
@end
// MyViewController ----------------------------------------------
@interface MyViewController: UIViewController <UITableViewDataSource>
@property (nonatomic, retain) MyView *view;
@end
@implementation MyViewController
- (void)loadView {
self.view = [[MyView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.tableView.dataSource = …Run Code Online (Sandbox Code Playgroud) 刚刚阅读了Wired最近的文章,我很好奇:Netflix奖是如此具有挑战性的是什么?我的意思是尽可能最真诚,我只是对比赛所带来的困难感到好奇.大多数推荐引擎一般难以改善吗?如果是这样,为什么呢?或者,Netflix是否异常难以改进,如果是这样的话,那么Netflix的特殊之处在于它比亚马逊更具挑战性?
自Objective-C 2.0以来,我们已经拥有了@properties自动生成的访问器方法.那么今天,键值编码有什么意义呢?在什么情况下写作更可取
[myObject setValue:foo forKey:@"bar"];
Run Code Online (Sandbox Code Playgroud)
而不是写作
[myObject setBar:foo];
Run Code Online (Sandbox Code Playgroud)
甚至
myObject.bar = foo;
Run Code Online (Sandbox Code Playgroud)
我一直看到使用KVC的文章和文档,但总是以一种似乎只是简单地使用属性的方式会更好.那我为什么要用KVC呢?感谢您的所有见解.
我正在使用ARC编写iOS应用程序,并以iOS 5+为目标.
假设我编写了一个具有委托属性的自定义视图对象.在声明委托属性时,我将它作为一个弱引用来避免保留循环,这样当实际的委托对象(控制器)被销毁时,我的自定义视图也将被销毁,如下所示:
@interface MyCustomView : UIView
@property (nonatomic, weak) id<MyCustomViewDelegate> delegate;
@end
Run Code Online (Sandbox Code Playgroud)
一切都很好.
好的,现在我正在编写控制器对象,它引用了两个视图对象:我的自定义视图和Apple提供的UIKit视图,两者都声明了委托属性,控制器是两个视图的委托.也许它看起来像这样:
@interface MyViewController : UIViewController <MyCustomViewDelegate, UITableViewDataSource, UITableViewDelegate>
@property (nonatomic, strong) MyCustomView *customView;
@property (nonatomic, strong) UITableView *tableView;
@end
@implementation MyViewController
- (void)viewDidLoad
{
self.customView.delegate = self;
self.tableView.dataSource = self;
self.tableView.delegate = self;
}
@end
Run Code Online (Sandbox Code Playgroud)
我的问题是:我是否需要覆盖dealloc将其中一个或两个委托设置为nil?
我的意思是,据我所知,UIKit视图的委托属性(在本例中tableView)实际上并未声明为弱引用,而是一个__unsafe_unretained引用,用于向后兼容非ARC版本的iOS.所以也许我需要写
- (void)dealloc
{
_tableView.dataSource = nil;
_tableView.delegate = nil;
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我必须覆盖dealloc,我仍然不必设置_customView.delegate = nil,对吧?因为(由我)声明它是一个弱引用,所以它应该在销毁时自动设置为nil MyViewController.
但另一方面,我不是针对iOS的非ARC版本,我也不打算这样做.所以也许我根本不需要覆盖dealloc?
我正在研究Allen Downey的" 如何像计算机科学家一样思考",并且我已经编写了我认为是练习10.10的功能正确的解决方案.但是运行起来只需要10个多小时(!),所以我想知道我是否缺少一些非常明显且有用的优化.
这是练习:
"两个单词'互锁',如果从每个单词中取代交替的字母形成一个新单词.例如,'shoe'和'cold'互锁形成'schooled'.编写一个程序,找到所有互锁的单词对.提示:Don'列举所有对!"
(对于这些单词列表问题,Downey提供了一个包含113809个单词的文件.我们可以假设这些单词在列表中,列表中每个项目一个单词.)
这是我的解决方案:
from bisect import bisect_left
def index(lst, target):
"""If target is in list, returns the index of target; otherwise returns None"""
i = bisect_left(lst, target)
if i != len(lst) and lst[i] == target:
return i
else:
return None
def interlock(str1, str2):
"Takes two strings of equal length and 'interlocks' them."
if len(str1) == len(str2):
lst1 = list(str1)
lst2 = list(str2)
result = []
for i in range(len(lst1)):
result.append(lst1[i])
result.append(lst2[i])
return ''.join(result)
else:
return …Run Code Online (Sandbox Code Playgroud) 该项目:我想在PHP中构建一个LaTeX-to-MathML转换器.为什么?因为我是一名数学家,我想在Drupal网站上发布数学.它不必翻译所有的LaTeX,因为基本的文档级资源由CMS很好地处理,并且不会在LaTeX中开始编写; 它只需将用LaTeX编写的数学翻译成用MathML编写的数学.虽然我觉得我已经完成了尽职调查,但这似乎并不存在.也许我错了 - 如果你知道一些能达到这个目的的东西,请务必告诉我,并提前感谢你.但假设它不存在,我想我必须自己去写.
但事情就是这样:我从未做过任何雄心勃勃的事情.我真的不知道从哪里开始.我已经使用PHP多年了,但只是做标准的"用PHP和MySQL构建CMS"类型的东西.我从来没有尝试过从一种语言到另一种语言的翻译看似复杂的东西.
我只是愚蠢地考虑用正则表达式来做 - 毕竟,LaTeX是一种更正式的语言,并且它不允许几乎所有类型的病态边缘情况,例如HTML.但另一方面,我很聪明地意识到这可能是一个可怕的想法:现在我有两个问题,我肯定不想像这个人那样结束.
那么,如果这不是要走的路(对吗?),那是什么?我该如何开始考虑这个问题?难道我基本上写在PHP一个LaTeX编译器,如果是这样,我该怎么需要知道做(比如,我应该只是去阅读紫金神龙书第一?)?
我对这个项目的前景感到非常兴奋和非常恐惧,但是,嘿,这就是我们都学习成为程序员的方式,对吧?如果我们需要的东西不存在,我们去构建它,必要性是......的主人.非常感谢大家提前为您提供的任何和所有指导.
我想开始使用html5的客户端数据库功能,但我不知道在哪里可以找到一个好的介绍/教程/操作方法.我多年来一直在编码(x)html,所以我对"这里的<head>元素"类型的介绍并不感兴趣; 我想了解一般html5中的新功能,特别是客户端数据库.有什么建议?
我正在使用 DrScheme 来完成 SICP,并且我注意到某些过程(例如square)被反复使用。我想将它们放在一个单独的文件中,以便我可以将它们包含在其他程序中,而不必每次都重写它们,但我似乎不知道如何做到这一点。
我试过了:
(load filename)
(load (filename))
(load ~/path-to-directory/filename)
(require filename)
(require ~/path-to-directory/filename)
(require path-from-root/filename)
Run Code Online (Sandbox Code Playgroud)
这些都不起作用。显然我正在抓住救命稻草——非常感谢任何帮助。