【问题标题】:book example not working in SWIFT Playground书籍示例在 SWIFT Playground 中不起作用
【发布时间】:2015-07-17 04:50:49
【问题描述】:

我正在寻找关于 Swift 的操场行为的解释。在 Beginning Swift Programming 一书的第 76 页上,doSomething 函数在 Xcode 中的行为与所述不同。

func doSomething(num1: Int, num2: Int) {
   println(num1, num2)
}

doSomething(5,6)

这本书没有给出答案,但我希望得到像(5,6) 这样的回复。但是,我没有收到任何错误,也没有任何响应。将操作更改为println(num1)doSomething(5,6) 有效。它产生5doSomething(5) 也是如此。对于这个问题。将其更改为println((num1, num2))doSomething(5,6) 产生(5,6)

我在运行 Yosemite 的 Mac 上使用 Xcode v.6.4。怎么回事?

【问题讨论】:

  • this
  • 我收到 (5,6) 作为回复。您想要什么确切信息?
  • 并不奇怪,因为有时 Playground 似乎需要额外的 CR 或空间。在这种情况下,我已经准确地输入了书中显示的内容,但什么也没得到。事实上,我复制/粘贴了代码。有人在 MSWord 中显示了这样做的问题。在这种情况下,源是 Acrobat。
  • 你能链接这本书吗,也可以告诉我们是哪一章。或节。页码在电子书中没有用。
  • 这本书是 Wei-Meng Lee 的《Beginning Swift Programming》。 overdrive.com/media/2056217/beginning-swift-programming 示例在第 5 节的第二页。

标签: swift


【解决方案1】:

据我所知,println() 函数只接受一个参数。

你要么这样做:

println((num1, num2)) // for printing as a Tuple object

或:

println("\(num1), \(num2)") // for printing as a String object

参考:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-ID309


普通项目而不是Playground中,您提供的代码确实有效。但是,您必须改为致电 doSomething(5, num2: 6)。 (斯威夫特 1.2/2.0)

【讨论】:

  • 权威参考,但本书作者似乎并不担心这一点。 :) Rohit 也没有。
  • 我编辑了我的答案。该代码确实可以在普通项目中使用,但调用不同。这本书可能引用了 Swift 1.0,而 Xcode 6.4 使用的是 1.2。
  • 本书的文字可能在一些 Swift 更改的背后。例如,我注意到“countElements()”更改为“count()”。您的评论似乎也表明您在 Playground 中尝试过。所以感谢您的额外努力。
  • FWIW 我尝试了你关于显式使用变量名 num2 的建议。 Playground 说:“调用中的无关参数标签 'num2:'。有几个人提出了其他方法来获得预期结果,所以这不是我的问题,而是找出 Playground 中的怪癖,所以你的输入特别有用。
  • afaik,Apple 改变了很多东西,多次破坏了我的项目,以至于我几乎生气并放弃了使用 Swift。它是一种新语言,并且仍在不断发展。这本书确实很好,但毕竟,最好自己尝试一下,不时阅读 Xcode 发行说明。顺便说一句,Swift 2 也有一些主要的语法,比如将 println() 重命名为 print()。所以你永远不知道。 :)
【解决方案2】:

这是 Swift 的基础知识,建议您查找答案而不是在这里提问。如果你想使用带有变量的println 打印一些东西。你必须使用\(variableName)。例如:

println("\(num1), \(num2)")

【讨论】:

  • 我同意这行得通。我的问题与为什么电子书中的某些内容似乎不起作用有关。有人可能会争辩说,阅读一本关于 Swift 的基本书籍实际上就是在寻找答案。
最近更新 更多