我知道有Swift REPL和Xcode游乐场,但是我想知道在Swift中是否有ruby -e "<code>"
或sh -c "<code>"
的替代方法,其中给定的一行代码将被执行为命令?
答案 0 :(得分:4)
没有直接的等价物(您可以向swift
命令查询swift --help
的选项,看看没有像Ruby的-e
那样的内容。
但是有一种解决方法。
您可以使用echo
和|
(“管道”)将Swift表达式传递给编译器direclty,如下所示:
echo "print(42)" | swift
结果:
欢迎使用Apple Swift 2.1.1版(“700.1.101.9 700.1.78”)。键入:帮助帮助。
42
我猜这与您正在寻找的行为相似。
我们注意到它总是打印引言,但有一种方法可以通过在命令末尾添加-
来解决这个问题,如下所示:
echo "print(42)" | swift -
结果:
42
使用文字字符串时,请转义双引号:
echo "print(\"hello\")" | swift -
结果:
您好
你可以执行任何表达式,甚至循环:
echo "for num in 1...5 { print(num) }" | swift -
结果:
1
2
3
4
5
等
它仍然是REPL所以它会提供有关变量的反馈(最后省略-
技巧),例如:
echo "let x = 42;print(x)" | swift
结果:
欢迎使用Apple Swift 2.1.1版(“700.1.101.9 700.1.78”)。键入:帮助帮助。
42个
x:Int = 42