为什么我的Swift程序打印不存在的字符?



下面的swift程序定义了一个名为tempConverter的枚举,有2个case - Fahrenheit &摄氏度。同样的枚举还定义了一个方法convert,它接受一个温度值作为Double类型,并根据tempConverter.self的初始值返回C到F或F到C的温度转换。它还定义了一个名为switchScale的方法,该方法简单地返回Celsius &提供的Double的华氏转换。当调用这些方法&打印他们的结果,我得到一系列的()字符转换值后输出。这是我看到的可视化输出的链接,如果你不想复制&自己运行代码。

这是完整的代码,我真的不知道为什么这些()字符被显示,或者如何从输出中删除它们。

任何帮助都是感激的!

(p.s)我知道我在程序中拼错了华氏度,我没有借口& &;我真是太笨了。继续。

import Foundation

enum tempConverter{
case Celsius
case Farenheit
init(in scale: String){
self = .Celsius
scale.lowercased()
if scale.contains("c"){
self = .Celsius
}

else if scale.contains("f"){
self = .Farenheit
}
}

func convert(for temp: Double){
switch(self){
case .Celsius: print(temp, "c ->", (temp * 9)/5 + 32, "f")
break
case .Farenheit: print(temp, "f ->", (temp - 32) * 5 / 9, "c")
break
}
}

mutating func switchScale(){
switch(self){

case .Celsius:
self = .Farenheit
print(convert(for: temp))
break

case .Farenheit:
self = .Celsius
print(convert(for: temp))
break
}
}
}
var instance = tempConverter(in: "f")
var temp = 32.0
print(instance.convert(for: temp), instance.switchScale())
temp = 212.0
print(instance.convert(for: temp), instance.switchScale()) 

你的代码有很多要改变,但要回答你的具体问题,你在输出中得到括号的原因是因为你正在打印一个函数。

struct SomeStruct {
func someFunc() {}
}
let s = SomeStruct()
print(s.someFunc()) // prints ()

你在这里做:

print(instance.convert(for: temp)) // prints ()

您看到的输出是打印函数调用的返回值。

不返回实值的函数被称为返回void,在swift中,void可以用关键字Void或用空括号()来表示,

在你的例子中,函数func convert(for temp: Double)返回void它被打印为()

你可以声明函数返回void如果你想要更清楚(但你不需要,编译器理解你),所以

func convert(for temp: Double) { ... }
func convert(for temp: Double) -> Void { ... }
func convert(for temp: Double) -> () { ... }

意思相同。

离题,但也许你的意思是你的函数返回一个Double,所以你可以打印它。像这样,例如

func convert(for temp: Double) -> Double {
switch(self){
case .Celsius: 
return temp * 9/5 + 32            
case .Farenheit: 
return (temp - 32) * 5 / 9
}
}

相关内容

  • 没有找到相关文章

最新更新