How do you access command line arguments in Swift?

前端 未结 6 1753
野趣味
野趣味 2020-12-04 07:02

How do you access command line arguments for a command line application in Swift?

6条回答
  •  我在风中等你
    2020-12-04 07:03

    Anyone who wants to use the old "getopt" (which is available in Swift) can use this as reference. I made a Swift port of the GNU example in C one can find at:

    http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html

    with a full description. It's tested and fully functional. It doesn't require Foundation either.

    var aFlag   = 0
    var bFlag   = 0
    var cValue  = String()
    
    let pattern = "abc:"
    var buffer = Array(pattern.utf8).map { Int8($0) }
    
    while  true {
        let option = Int(getopt(C_ARGC, C_ARGV, buffer))
        if option == -1 {
            break
        }
        switch "\(UnicodeScalar(option))"
        {
        case "a":
            aFlag = 1
            println("Option -a")
        case "b":
            bFlag = 1
            println("Option -b")
        case "c":
            cValue = String.fromCString(optarg)!
            println("Option -c \(cValue)")
        case "?":
            let charOption = "\(UnicodeScalar(Int(optopt)))"
            if charOption == "c" {
                println("Option '\(charOption)' requires an argument.")
            } else {
                println("Unknown option '\(charOption)'.")
            }
            exit(1)
        default:
            abort()
        }
    }
    println("aflag ='\(aFlag)', bflag = '\(bFlag)' cvalue = '\(cValue)'")
    
    for index in optind..

提交回复
热议问题