Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Underscore.m + Asterism
Search
Robert Böhnke
August 21, 2013
Programming
4
1.2k
Underscore.m + Asterism
My talk on Underscore.m and Asterism for CocoaHeads Berlin
Robert Böhnke
August 21, 2013
Tweet
Share
More Decks by Robert Böhnke
See All by Robert Böhnke
Brooklyn iOS Developer Meetup February 2014
robb
8
2.9k
Cocoa Kucha Berlin 2013
robb
2
2.1k
ReactiveCocoa NSSpain
robb
18
2.4k
ReactiveCocoa
robb
19
2.7k
Super Mario Masterclass
robb
2
280
Tetris Masterclass
robb
0
510
Other Decks in Programming
See All in Programming
A New Era of Testing
mannodermaus
2
520
長期運用プロダクトの開発速度を維持し続けるためのリファクタリング実践例
wataruss
8
2.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
0
120
What is Parser
yui_knk
9
4.2k
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
3
470
GenU導入でCDKに初挑戦し、悪戦苦闘した話
hideg
0
170
Scala におけるコンパイラエラーとの付き合い方
chencmd
2
430
GoのIteratorに詳しくなってしまう
inatonix
1
210
Securify_エンジニア採用資料
3shake
0
110
Patched fetch did not work
quramy
4
400
Jakarta EE meets AI
ivargrimstad
0
390
Prolog入門
qnighy
4
1k
Featured
See All Featured
The Invisible Customer
myddelton
119
13k
In The Pink: A Labor of Love
frogandcode
139
22k
The Illustrated Children's Guide to Kubernetes
chrisshort
47
48k
10 Git Anti Patterns You Should be Aware of
lemiorhan
653
58k
Building a Modern Day E-commerce SEO Strategy
aleyda
36
6.8k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
663
120k
Atom: Resistance is Futile
akmur
261
25k
VelocityConf: Rendering Performance Case Studies
addyosmani
322
23k
Intergalactic Javascript Robots from Outer Space
tanoku
268
26k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
29
2.6k
Code Reviewing Like a Champion
maltzj
517
39k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
Transcript
[email protected]
github.com/robb
Let's talk about
Let's talk about Objective-C
Let's talk about Objective-C talk about
[ ]
transitionFromViewController: toViewController: duration: options: animations: completion:
videoComposition: shouldContinueValidatingAfter FindingInvalidTrackIDInInstruction: layerInstruction: asset:
predicateWithLeftExpression: rightExpression: modifier: type: helpMe: iAmTrappedInAMethodFactory: options:
//
new Grapefruit(0, 10);
[CHGrapefruit grapefruitWithSeeds:0 tastiness:10];
duh!
[NSDictionary dictionaryWithObjectsAndKeys:value, key, nil];
@{ key: value }
enumerateObjectsUsingBlock:
enumerateKeysAndObjectsUsingBlock:
each?
map?
reduce?
filter?
Underscore.m
inspired by underscore.js
not trying to turn Objective-C into JavaScript
not trying to turn Objective-C into JavaScript though it looks
kinda like it…
DSL for data manipulation
Underscore.wrap(array) .filter(^(id obj) { return [obj tastiness] > 8; })
.map(^(id obj) { return [obj juice]; }) .unwrap;
wtf?
@property USDictWrapper *(^map)(USMapBlock block);
foo.method1().method2();
// Nocilla stubRequest(@"GET", @"https://api.example.com") .withHeader(@"Accept", @"application/json");
// Expecta expect(CocoaHeads).to.beFun();
but
- (NSDictionary *)us_map:(USMapBlock block);
[[dictionary us_map:^(id key, id value) { return …; }] us_filter:^(id
object) { return …; }];
Check out BlocksKit
DSL
github.com/robb/Underscore.m
Asterism
Underscore.dictWrap(dictionary).map(block).unwrap; Underscore.arrayWrap(array).map(block).unwrap;
Underscore.dictMap(dictionary, block); Underscore.arrayMap(array, block);
Underscore.dictEach(dictionary, block); Underscore.arrayEach(array, block);
Asterism
__attribute__((overloadable))
ASTEach(NSArray *array, void(^block)(id obj)); ASTEach(NSArray *array, void(^block)(id obj, NSUInteger idx));
ASTEach(NSSet *set, void(^block)(id obj)); …
github.com/robb/Underscore.m github.com/robb/Asterism
thanks!