2
0
mirror of https://github.com/sharkdp/bat synced 2024-11-06 21:20:25 +00:00
bat/tests/syntax-tests/highlighted/Swift/test.swift
2020-10-09 23:22:30 +02:00

269 lines
46 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

class Person {
// We can define class property here
var age = 25
// Implement Class initializer. Initializers are called when a new object of this class is created
init() { 
 print(A new instance of this class Person is created.) 
 } 
} 
// We can now create an instance of class Person - an object - by putting parentheses after the class name
let personObj = Person()
// Once an instance of Person class is created we can access its properties using the dot . syntax.
print(This person age is \(personObj.age))
import Foundation
class Friend : Comparable {
 let name : String
 let age : Int
 
 init(name : String, age: Int) {
 self.name = name
 self.age = age
 }
}
func < (lhs: Friend, rhs: Friend) -> Bool {
 return lhs.age < rhs.age }; func > (lhs: Friend, rhs: Friend) -> Bool {
 return lhs.age > rhs.age
}
func == (lhs: Friend, rhs: Friend) -> Bool {
 var returnValue = false
 if (lhs.name == rhs.name) && (lhs.age == rhs.age)
 {
 returnValue = true
 }
 return returnValue
}
 let friend1 = Friend(name: "Sergey", age: 35)
 let friend2 = Friend(name: "Sergey", age: 30)
 
 print("Compare Friend object. Same person? (friend1 == friend2)")
func sayHelloWorld() {
 print("Hello World")
}
// Call function
sayHelloWorld()
func printOutFriendNames(names: String...) {
 
 for name in names {
 
 print(name)
 }
 
}
// Call the printOutFriendNames with two parameters
printOutFriendNames("Sergey", "Bill")
// Call the function with more parameters
printOutFriendNames("Sergey", "Bill", "Max")
let simpleClosure = {
 print("From a simpleClosure")
}
// Call closure
simpleClosure() 
let fullName = { (firstName:String, lastName:String)->String in
 return firstName + " " + lastName
}
// Call Closure
let myFullName = fullName("Sergey", "Kargopolov")
print("My full name is \(myFullName)")
let myDictionary = [String:String]()
// Another way to create an empty dictionary
let myDictionary2:[String:String] = [:]
// Keys in dictionary can also be of type Int
let myDictionary3 = [Int:String]()
var myDictionary = ["first_name": "Sergey", "last_name": "Kargopolov"]
// print to preview
print(myDictionary)
// Add a new key with a value
myDictionary["user_id"] = "f5h7ru0tJurY8f7g5s6fd"
// We should now have 3 key value pairs printed
print(myDictionary)
var myDictionary = ["first_name": "Sergey", "last_name": "Kargopolov"]
// Loop through dictionary keys and print values
for (key,value) in myDictionary {
 print("\(key) = \(value)")
}
 class Friend {
 let name : String
 let age : Int
 
 init(name : String, age: Int) {
 self.name = name
 self.age = age
 }
}
 var friends:[Friend] = []
 
 let friend1 = Friend(name: "Sergey", age: 30)
 let friend2 = Friend(name: "Bill", age: 35)
 let friend3 = Friend(name: "Michael", age: 21)
 
 friends.append(friend1)
 friends.append(friend2)
 friends.append(friend3)
 
 printFriends(friends: friends)
 
 // Get sorted array in descending order (largest to the smallest number)
 let sortedFriends = friends.sorted(by: { $0.age > $1.age })
 printFriends(friends: sortedFriends)
 
 // Get sorted array in ascending order (smallest to the largest number)
 let sortedFriendsAscendingOrder = friends.sorted(by: { $0.age < $1.age })
 printFriends(friends: sortedFriendsAscendingOrder)
 func printFriends(friends: [Friend])
 {
 for friendEntry in friends {
 print("Name: \(friendEntry.name), age: \(friendEntry.age)")
 }
 }
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
 super.viewDidLoad()
}
override func viewWillAppear(_ animated: Bool) {
 super.viewWillAppear(animated)
 
 // Create destination URL 
 let documentsUrl:URL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first as URL!
 let destinationFileUrl = documentsUrl.appendingPathComponent("downloadedFile.jpg")
 
 //Create URL to the source file you want to download
 let fileURL = URL(string: "https://s3.amazonaws.com/learn-swift/IMG_0001.JPG")
 
 let sessionConfig = URLSessionConfiguration.default
 let session = URLSession(configuration: sessionConfig)
 
 let request = URLRequest(url:fileURL!)
 
 let task = session.downloadTask(with: request) { (tempLocalUrl, response, error) in
 if let tempLocalUrl = tempLocalUrl, error == nil {
 // Success
 if let statusCode = (response as? HTTPURLResponse)?.statusCode {
 print("Successfully downloaded. Status code: \(statusCode)")
 }
 
 do {
 try FileManager.default.copyItem(at: tempLocalUrl, to: destinationFileUrl)
 } catch (let writeError) {
 print("Error creating a file \(destinationFileUrl) : \(writeError)")
 }
 
 } else {
 print("Error took place while downloading a file. Error description: %@", error?.localizedDescription);
 }
 }
 task.resume()
 
 }
}
 do {
 
 // Convert JSON Object received from server side into Swift NSArray.
 // Note the use "try"
 if let convertedJsonIntoArray = try JSONSerialization.JSONObjectWithData(data!, options: []) as? NSArray {
 }
 
 } catch let error as NSError {
 print(error.localizedDescription)
 }
DispatchQueue.global(qos: .userInitiated).async {
 // Do some time consuming task in this background thread
 // Mobile app will remain to be responsive to user actions
 
 print("Performing time consuming task in this background thread")
 
 DispatchQueue.main.async {
 // Task consuming task has completed
 // Update UI from this block of code
 print("Time consuming task has completed. From here we are allowed to update user interface.")
 }
 }
import UIKit
class ViewController: UIViewController {
 
 override func viewDidLoad() {
 super.viewDidLoad()
 // Do any additional setup after loading the view, typically from a nib.
 
 let button = UIButton(type: UIButtonType.system) as UIButton
 
 let xPostion:CGFloat = 50
 let yPostion:CGFloat = 100
 let buttonWidth:CGFloat = 150
 let buttonHeight:CGFloat = 45
 
 button.frame = CGRect(x:xPostion, y:yPostion, width:buttonWidth, height:buttonHeight)
 
 button.backgroundColor = UIColor.lightGray
 button.setTitle("Tap me", for: UIControlState.normal)
 button.tintColor = UIColor.black
 button.addTarget(self, action: #selector(ViewController.buttonAction(_:)), for: .touchUpInside)
 
 self.view.addSubview(button)
 }
 
 func buttonAction(_ sender:UIButton!)
 {
 print("Button tapped")
 }
 
 override func didReceiveMemoryWarning() {
 super.didReceiveMemoryWarning()
 // Dispose of any resources that can be recreated.
 }
 
 
}
import UIKit
class ViewController: UIViewController {
 
 override func viewDidLoad() {
 super.viewDidLoad()
 
 //Create Activity Indicator
 let myActivityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.gray)
 
 // Position Activity Indicator in the center of the main view
 myActivityIndicator.center = view.center
 
 // If needed, you can prevent Acivity Indicator from hiding when stopAnimating() is called
 myActivityIndicator.hidesWhenStopped = false
 
 // Start Activity Indicator
 myActivityIndicator.startAnimating()
 
 // Call stopAnimating() when need to stop activity indicator
 //myActivityIndicator.stopAnimating()
 
 
 view.addSubview(myActivityIndicator)
 }
 
 override func didReceiveMemoryWarning() {
 super.didReceiveMemoryWarning()
 }
 
}