Skip to content

Instantly share code, notes, and snippets.

@lukeredpath
Created August 5, 2010 12:22
Show Gist options
  • Select an option

  • Save lukeredpath/509644 to your computer and use it in GitHub Desktop.

Select an option

Save lukeredpath/509644 to your computer and use it in GitHub Desktop.
class SimpleBuilder
def set(key, value)
@stuff[key] = value
end
def self.build(&block)
new.tap { |builder| builder.instance_eval(&block) }
end
end
SimpleBuilder.build do
set :foo, "bar"
end
@implementation SimpleBuilder
- (void)set:(NSString *)key value:(NSString *)value
{
[stuff setObject:value forKey:key];
}
+ (id)build:(void (^)(SimpleBuilder *builder))block
{
SimpleBuilder *builder = [self new];
block(builder);
return builder;
}
@end
[SimpleBuilder build:^(SimpleBuilder *builder) {
[builder set:@"foo" value:@"bar"];
}];
// would like to do
[SimpleBuilder build:^{
[self set:@"foo" value:@"bar"];
}];
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment