【发布时间】:2015-12-18 14:44:56
【问题描述】:
我知道有 Swift REPL 和 Xcode 游乐场,但我想知道在 Swift 中是否有替代 ruby -e "<code>" 或 sh -c "<code>" 的方式,其中给定的一行代码将作为命令的结果执行?
【问题讨论】:
我知道有 Swift REPL 和 Xcode 游乐场,但我想知道在 Swift 中是否有替代 ruby -e "<code>" 或 sh -c "<code>" 的方式,其中给定的一行代码将作为命令的结果执行?
【问题讨论】:
没有直接的等价物(您可以使用swift --help 向swift 命令询问它的选项,并看到没有像Ruby 的-e 这样的东西)。
但是有一个解决方法。
您可以使用 echo 和 |(“管道”)将 Swift 表达式直接传递给编译器,如下所示:
echo "print(42)" | swift
结果:
欢迎使用 Apple Swift 2.1.1 版(“700.1.101.9 700.1.78”)。输入 :help 寻求帮助。
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”)。输入 :help 寻求帮助。
42
x: 整数 = 42
【讨论】: