-
-
Save ericleiyang/14a335601f5046a02e73a0756318a4e9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import UIKit | |
public struct CollectionViewCellProvider { | |
@available(iOS 13, *) | |
public static func compositionalCell() { | |
// compositional collection view cell | |
} | |
public static func collectionCell() -> UICollectionViewCell { | |
// collection view cell | |
return UICollectionViewCell() | |
} | |
} | |
class ParentViewController: UIViewController { | |
override func viewDidLoad() { | |
presentViewController() // No Xcode complains! | |
} | |
@discardableResult | |
func presentViewController() -> UIViewController { | |
return UIViewController() | |
} | |
} | |
@dynamicCallable | |
struct RandomProvider { | |
func dynamicallyCall(withArguments args: [Int]) -> Double { | |
let numberOfZeroes = Double(args[0]) | |
let maximum = pow(10, numberOfZeroes) | |
return Double.random(in: 0...maximum) | |
} | |
func dynamicallyCall(withKeywordArguments args: KeyValuePairs<String, Int>) -> Double { | |
let numberOfZeroes = Double(args.first?.value ?? 0) | |
let maximum = pow(10, numberOfZeroes) | |
return Double.random(in: 0...maximum) | |
} | |
} | |
let random = RandomProvider() | |
print(random(1)) // 8.15946134247 | |
print(random(a:1)) // 5.14551692644 | |
@dynamicMemberLookup | |
struct User { | |
subscript(dynamicMember member: String) -> String { | |
let properties = ["firstname": "Bob", "lastname": "Dylan"] | |
return properties[member, default: ""] | |
} | |
} | |
let user = User() | |
print(user.firstname) // Bob | |
print(user.lastname) // Dylan | |
@main | |
struct Repeat: ParsableCommand { | |
@Argument(help: "The phrase to repeat.") | |
var phrase: String | |
mutating func run() throws { | |
for _ in 1...5 { | |
print(phrase) | |
} | |
} | |
} | |
class Service { | |
var closure: (() -> Void)? | |
func storageExample(with completion: @escaping (() -> Void)) { | |
closure = completion // error: assigning non-escaping parameter 'completion' to an @escaping closure | |
} | |
func asyncExample(with completion: @escaping (() -> Void)) { | |
DispatchQueue.global().async { // error: escaping closure captures non-escaping parameter 'completion' | |
completion() | |
} | |
} | |
func runAsyncTask(completion: @escaping (() -> Void)) { | |
DispatchQueue.global().async { | |
completion() | |
} | |
} | |
} | |
enum UILayoutConstraintAxis: Int { | |
case UILayoutConstraintAxisHorizontal = 0 | |
case UILayoutConstraintAxisVertical = 1 | |
case UILayoutConstraintAxisZ = 2 | |
} | |
let axis = UILayoutConstraintAxis.UILayoutConstraintAxisHorizontal | |
switch axis { | |
case .UILayoutConstraintAxisHorizontal: | |
print("") | |
case .UILayoutConstraintAxisVertical: | |
print("") | |
@unknown default: | |
print("") | |
} | |
@propertyWrapper | |
struct WhitespaceTrimmable { | |
private(set) var value: String = "" | |
var wrappedValue: String { | |
get { value } | |
set { value = newValue.trimmingCharacters(in: .whitespacesAndNewlines) } | |
} | |
init(wrappedValue: String) { | |
self.wrappedValue = wrappedValue | |
} | |
} | |
struct Service { | |
@WhitespaceTrimmable(wrappedValue: "Default title") var title: String | |
func accessTitle() { | |
print("title: \(_title)") //Default title | |
} | |
} | |
var temp = Service() | |
print(temp.title) | |
temp.accessTitle() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment