可以快速循环使用函数作为参数吗?

时间:2017-01-06 19:03:31

标签: ios swift while-loop

我正在研究使用在线编译器的练习挑战问题。我编写了下面的代码,它在Xcode中工作,但在线编译器说我错了。

这是我的代码,我知道它是正确的,可以在Xcode中使用:

func squareThatNumber(input: Int) -> Int{
            let x: Int = input * input
            return x
        }

        print(squareThatNumber(input: 5))

也许我不理解这个问题,因为在线编译器是从这个代码开始的,我从未见过以这种方式编写的while循环:

import Foundation

while let line: String = readLine() {
    print(line)
}

有人可以解释上面的代码正在做什么,因为它在在线编译器中编译,但我从未见过while循环使用函数。非常感谢任何详细解释这一点的方向或资源。

2 个答案:

答案 0 :(得分:1)

此代码在每次迭代开始时调用readLine()。该函数的结果是String?(a.k.a。Optional<String>)。如果那里确实存在String,则它将被绑定到变量line,并且该块将被调用一次。重复此过程,直到绑定不可能,即直到readLine()返回nil

答案 1 :(得分:0)

@Alexander回答提供正确的信息,以了解正在发生的事情。在搜索SO之后,这个挑战与HackerRank上的相似,并在此SO question as well

中得到了解答

这个在线编译器中使用的代码如下,Alexander指出它是如何工作的:

import Foundation

func squareThatNumber(input: Int) -> Int{
            let x = input * input
            return x
        }

while let line: String = readLine() {

    print(squareThatNumber(Int(line)!))

}