How Swift standard types and classes were supposed to work
github.com
github.com
Some specific issues:
> Easily access your ViewController on top of your view stack:
let topOfMyViewStack = topMostVC
UIKit supports an arbitrary number of windows, so "your view stack" is not something that is definable.> Easily access your screen width & height:
print(screenWidth) // 375.0 on iPhone6
print(screenHeight) // 667.0 on iPhone6
Which screen? iOS supports multiple screens - there's a reason that these things are scoped to instance properties of UIScreen.> Easily run block of code:
let myBlock = {
print("lol")
}
runThisBlock(myBlock)
You can just call it directly with myBlock() - which the implementation presumably does.> Easily convert between different types:
var myDouble = myInt.toDouble
Double(myInt) isn't really hard, and the "easy" version is more characters.> Easily access ViewController sizes:
View controllers do not have sizes - views do.
I don't want to rag on the author too much, but I'd also like to add something about the tagline "How Swift standard types and classes were supposed to work". This seems needlessly offensive and incorrect - in all likelihood, Chris Lattner is smarter (or at least more educated on the subject) than you - or me! There's no need to say that he's doing his work incorrectly. Instead, a tagline like "useful extensions for the Swift Standard Library, Foundation, and UIKit" wouldn't imply that the Swift team wasn't doing their job. Save that for complaining about the inability to define a Monad protocol.
I agree on your point of view on some of the matters.
>Which screen? The main screen, how can I make that more clearer, I thought it was clear.
>Double(myInt) isn't really hard, and the "easy" version is more characters. Correct, but it really is easier to write .toDouble() (Less keystores, more characters)
I am going to update some of the stuff you said on the next update, thanks again.
As for aesthetics, this library will be adopted by a lot of people who don't understand Cocoa conventions. If I saw it part of a project, I'd consider it a red flag.
Honestly, I think you just need more experience before attempting a library like this.
Plus #1 and #3 (not in-place) can be expressed through #2 and likewise #1 and #2 can be expressed through #3 (not in place, especially if it's an iterator).
So the naming is unhelpful and the only operation implemented is the least useful random collection operation. That's not very good.
Finally you don't need to pull a whole library for that, it's a 3 lines extension.
I don't see the confusion. #1 would be .random(), #2 would be .random(Int), and #3 would be .shuffle() with both mutating and non-mutating versions.
> So the naming is unhelpful and the only operation implemented is the least useful random collection operation.
There could be all three of these methods, which you could use depending on your needs.
> Finally you don't need to pull a whole library for that, it's a 3 lines extension.
The purpose of a standard library is to make common things easy. At least one of these three functions are found in nearly all other languages' standard libraries I've ever used.
All three operations are random, naming something "random" provides no indication whether it's a random indexing or a random shuffling.
> There could be all three of these methods, which you could use depending on your needs.
Sure, but there isn't, and the one operation which is provided is the one you can't use as basic building blocks for the other two.
> The purpose of a standard library is to make common things easy. At least one of these three functions are found in nearly all other languages' standard libraries I've ever used.
Your point being? I'm not saying the operation is useless, I'm saying the naming is confusing and out of 3 possible operations using that name, the least useful one was selected.