You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么我的Swift程序打印结果会出现多余的()字符?

问题成因

你定义的convert和switchScale两个方法都没有声明返回值,Swift中无返回值的方法默认返回Void类型,也就是空元组()。你在print语句中直接传入这两个方法的调用结果,print就会把方法返回的空元组()也打印出来,这就是多余字符的来源。
另外代码还存在两个隐性问题:初始化方法中scale.lowercased()调用后没有接收返回值,小写转换逻辑无效;switchScale方法直接使用全局temp变量,逻辑耦合度高。

修复步骤

1. 移除外层多余的print调用

两个方法内部已经自带了打印逻辑,不需要再嵌套一层print调用,原写法:

print(instance.convert(for: temp), instance.switchScale())

改为直接调用即可:

instance.convert(for: temp)
instance.switchScale(for: temp)

2. 优化switchScale方法

移除方法内部嵌套的print调用,同时增加温度参数,避免依赖全局变量:

mutating func switchScale(for temp: Double){
    switch self {
    case .Celsius:
        self = .Farenheit
        convert(for: temp)
    case .Farenheit:
        self = .Celsius
        convert(for: temp)
    }
}

3. 修复初始化方法的小写判断逻辑

接收小写转换后的结果再做判断,避免大小写输入导致判断失效:

init(in scale: String){
    self = .Celsius
    let lowercasedScale = scale.lowercased()
    if lowercasedScale.contains("c"){
        self = .Celsius
    } else if lowercasedScale.contains("f"){
        self = .Farenheit
    }
}

完整可运行修复后代码

import Foundation

enum tempConverter{
    case Celsius
    case Farenheit

    init(in scale: String){
        self = .Celsius
        let lowercasedScale = scale.lowercased()
        if lowercasedScale.contains("c"){
            self = .Celsius
        } else if lowercasedScale.contains("f"){
            self = .Farenheit
        }
    }
    
    func convert(for temp: Double){
        switch self {
        case .Celsius: print(temp, "c ->", (temp * 9)/5 + 32, "f")
        case .Farenheit: print(temp, "f ->", (temp - 32) * 5 / 9, "c")
        }
    }
    
    mutating func switchScale(for temp: Double){
        switch self {
        case .Celsius:
            self = .Farenheit
            convert(for: temp)
        case .Farenheit:
            self = .Celsius
            convert(for: temp)
        }
    }
}

var instance = tempConverter(in: "f")

var temp = 32.0
instance.convert(for: temp)
instance.switchScale(for: temp)

temp = 212.0
instance.convert(for: temp)
instance.switchScale(for: temp)

内容的提问来源于stack exchange,提问作者AR_97

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 16:27:01