



installare con umake
umake swift
# crea directory sudo mkdir -p /opt/apple/swift # mettere dir nel PATH export PATH="$PATH:/opt/apple/swift" # scarica pacchetto sudo tar -xzf /usr/local/archive/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu14.04.tar.gz # estrai pacchetto # attenzione alle subdir, vanno estratte in /usr/* swift -v # REPL swift -repl // le classi base del linguaggio sono in: ls /usr/local/lib/swift/CoreFoundation/*.h
SDK:
swift -i -sdk $(xcrun --show-sdk-path --sdk macosx) wc.swift
basic compile module in multiple files main.swift
import Foundation
 
let filenames = Process.arguments
for filename in filenames {
  var fileContents:String? = String.stringWithContentsOfFile(filename)
}
// compilation: swiftc main.swift rectangle.swift
let s = Rectangle(base:5, height:6)
print("The area of the rectangle is \(s.area()).")
rectangle.swift
import Foundation
class Rectangle {
    var base:Int
    var height:Int
    init(base:Int, height:Int) {
        self.base = base
        self.height = height
    }
    func area() -> Int {
        return self.base * self.height
    }
}
echo 'println("Hello World")' > script.swift # run the program as script xcrun swift script.swift # compile the program swiftc script.swift -o test
run program as a script, with shebang
#!/usr/bin/xcrun swift -i
swift script.swift
reading text file line by line
import Foundation
let s:String? = read("alkaline_metals.txt")
let lines:[String]? = s?.split(sep: "\n")
var alkaline_metals:[[String]] = []
if lines != nil {
    for line in lines! {
        alkaline_metals.append(line.strip.split(sep: " "))
    }
}
println(alkaline_metals)
for alkaline_metal in alkaline_metals {
    println(alkaline_metal)
}
import Foundation
let filenames = Process.arguments
for filename in filenames {
    var fileContents:String? = String.stringWithContentsOfFile(filename)
    if let contents = fileContents {
        var whitespace = NSCharacterSet.whitespaceAndNewlineCharacterSet() as NSCharacterSet
        var newline    = NSCharacterSet.newlineCharacterSet() as NSCharacterSet
        var lines:Array = contents.componentsSeparatedByCharactersInSet(newline)
        var words:Array = contents.componentsSeparatedByCharactersInSet(whitespace)
        var numChars = countElements(contents)
        var numLines = lines.count - 1
        var numWords = words.count - 1
        println("t(numLines)t(numWords)t(numChars)t(filename)")
    } else {
        println("wc.swift: (filename):  No such file")
    }
}
standard input
//  stdio example
import Foundation
// reading STDIN
func input(msg:String = "") -> String {
    print(msg)
    var in_fh = NSFileHandle.fileHandleWithStandardInput()
    var data = in_fh.availableData
    in_fh.closeFile()
    var s = NSString(data: data, encoding: NSUTF8StringEncoding)
    s = s?.substringToIndex(s!.length - 1)
    return s!
}
func read(path:String) -> String? {
    var fh = NSFileHandle(forReadingAtPath: path)
    let data = fh?.readDataToEndOfFile()
    if fh == nil {
        error("file(\(path)) can't open.")
    }
    fh?.closeFile()
    return NSString(data: data!, encoding: NSUTF8StringEncoding)
}
func print(s:String, path:String, end:String = "\n") {
    (s + end).writeToFile(path, atomically: true, encoding: NSUTF8StringEncoding, error: nil)
}
func error(msg:String) {
    let stderr = NSFileHandle.fileHandleWithStandardError()
    stderr.writeData((msg + "\n").dataUsingEncoding(NSUTF8StringEncoding)!)
    exit(1)
}
let argv:[String] = NSProcessInfo.processInfo().arguments.map({(x:AnyObject) -> String in x as String})
import Foundation
 
let jsonString = "{ \"foo\": 1, \"bar\": [10, \"apples\"] }"
if let jsonData = jsonString.dataUsingEncoding(NSUTF8StringEncoding) {
  if let jsonObject : AnyObject = NSJSONSerialization.JSONObjectWithData(jsonData, options: .AllowFragments, error: nil) {
    println("NSDictionary: \(jsonObject)")
  }
}
 
let obj = [
  "foo": [1, "Orange"],
  "bar": 1
]
 
if let objData = NSJSONSerialization.dataWithJSONObject(obj, options: .PrettyPrinted, error: nil) {
  if let jsonString2 = NSString(data: objData, encoding: NSUTF8StringEncoding) {
    println("JSON: \(jsonString2)")
  }
}