Вы можете передать обратный вызов и вызвать обратный вызов внутри асинхронного вызова
примерно так:
class func getGenres(completionHandler: (genres: NSArray) -> ()) {
...
let task = session.dataTaskWithURL(url) {
data, response, error in
...
resultsArray = results
completionHandler(genres: resultsArray)
}
...
task.resume()
}
, а затем вызвать этот метод:
override func viewDidLoad() {
Bookshop.getGenres {
genres in
println("View Controller: \(genres)")
}
}
Python имеет удобный модуль, shlex
, для этого. Попробуйте что-то вроде:
$ cat shparse.py
import shlex
import fileinput
for line in fileinput.input():
parts = shlex.split(line)
print(f'command: {parts[0]}')
argument_number = 1
for argument in parts[1:]:
print(f'${argument_number}: {argument}')
argument_number += 1
$ cat commands.txt
echo -e "hello world\n"
cat path_to/some\ file
$ python3 shparse.py <commands.txt
command: echo
$1: -e
$2: hello world\n
command: cat
$1: path_to/some file