我正在研究使用在线编译器的练习挑战问题。我编写了下面的代码,它在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循环使用函数。非常感谢任何详细解释这一点的方向或资源。
答案 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)!))
}