完成一些旧的HackerRank挑战。
其中一些似乎已损坏-例如,“ Fair Rations”为我们提供了以下函数签名(注意:参数的大写不是我的错,在这种情况下不能更改。
func fairRations(B: [Int]) -> Int {
// Enter code answer code here
}
现在问题测试用例(这里的问题的细节并不重要)要求我们返回
Int
(即4)(针对某些测试用例)和
字符串
(即“否”)进行其他测试。
所以我需要根据我的回答返回一个字符串或一个整数。我试图返回一个枚举,但是我无法对HackerRank测试进行任何更改-也返回了任何
喜欢:
func fairRations(B: [Int]) -> Any {
// Enter code answer code here
}
不起作用,因为Any不能隐式转换为String或Int。
HackerRank问题在这里:https://www.hackerrank.com/challenges/fair-rations/problem
为澄清Joakim Danielson的问题,问题描述意味着您可以向控制台输出“ NO”,但这实际上并非如此(请参见下面的屏幕截图)。
在Swift中是否有可能同时返回String和Int的函数?
答案 0 :(得分:1)
只需更改函数以返回String
。请记住,整数也可以表示为字符串。字符串“ 4”代表数字4。
我将此功能更改为黑客等级:
func fairRations(B: [Int]) -> String {
return "4"
}
它通过了此测试:
基本上
x
,只需返回x.description
"NO"
。以上两个值都是字符串。
在这里返回String
是可行的,因为测试调用了String(...)
初始化程序。而且,如果您向该字符串传递一个字符串,它仍会创建您传入的字符串。
编辑:
我尝试编辑客户端代码,它可以工作。您可以只返回Int?
并执行以下操作:
if let result = fairRations(B: B) {
fileHandle.write(String(result).data(using: .utf8)!)
} else {
fileHandle.write("NO".data(using: .utf8)!)
}