xcode 如何用Swift打印结构体中方法的输出?

2ul0zpep  于 2022-12-14  发布在  Swift
关注(0)|答案(2)|浏览(167)

我对编程和Swift都很陌生。为什么getDetails函数底部的一个简单的print(getDetails())不足以获得输出呢?它总是返回一个错误“在函数声明的主体中需要'{'”。
这是密码...

struct Car {
    let make:String = "MINI"
    let model:String = "COOPER"
    let year:String = "2015"
    
    var details:String {
        return year + " " + make + " " + model
    }
    func getDetails() -> String {
        return details
    }
    print(getDetails())
}
x3naxklr

x3naxklr1#

structclass的顶层,只允许定义函数和属性。例如,let make:String = "MINI"func getDetails() -> String { ... }是有效的顶层声明。
但是,不允许将不定义函数或属性(如print(""))的命令式代码放在这样的类型的顶层。
如果你是在Swift游戏场,你可以把命令式代码放在文件的顶层(而不是结构体或类的顶层),所以,这是有效的:

struct Car {
    let make:String = "MINI"
    let model:String = "COOPER"
    let year:String = "2015"
    
    var details:String {
        return year + " " + make + " " + model
    }
    func getDetails() -> String {
        return details
    }
}

let myCar = Car()
print(myCar.getDetails())

由于getDetails只返回details,所以这有点多余,所以我们可以重构为:

struct Car {
    let make:String = "MINI"
    let model:String = "COOPER"
    let year:String = "2015"
    
    var details:String {
        return year + " " + make + " " + model
    }
}

let myCar = Car()
print(myCar.details)
c90pui9n

c90pui9n2#

import UIKit
import Foundation
struct Car {
   private var make = "Toyota"
  private  var model = "Camry"
    private var year = "1999"
   private var details:String {
        year + " " + make + " " + model
    }
  func getDetails () -> String {
    return details
 }
}
let a:Car = Car()
print (a.getDetails())

相关问题