执行嵌入到一行终端命令中的Swift代码

时间:2015-12-18 14:44:56

标签: xcode swift bash terminal

我知道有Swift REPL和Xcode游乐场,但是我想知道在Swift中是否有ruby -e "<code>"sh -c "<code>"的替代方法,其中给定的一行代码将被执行为命令?

1 个答案:

答案 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