【问题标题】:How to append Bool value of a struct in Swift如何在 Swift 中附加结构的 Bool 值
【发布时间】:2020-05-02 21:28:42
【问题描述】:

所以,我正在使用 Swift 进行编码,并且我创建了一个名为 User 的结构。它有四类特征——姓名、电子邮件、关注者数量和活动状态。我可以毫无问题地附加我创建的结构变量的值,只要它们是字符串或整数、字典等。它不会让我附加 Bool 的值。我最初将其设置为“真”,但我想在初始化后将其附加为“假”。我收到错误消息:“'Bool' 类型的值没有成员 'append'”。我知道我不允许以与说 User.name.append("Tim") 相同的方式附加它,但我不明白我实际上是如何可以附加的它。谷歌没有帮助,在 SO 中搜索也没有产生任何值得注意的结果,Apple 关于 Structs 的文档显示他们在开始时使用字符串和布尔值并附加字符串但不附加布尔值在他们的解释中设置了类似的值。我无法想象这是不可能的,因为事情总是从真实状态变为虚假状态,具体取决于情况。如果我删除下面的行,它编译得很好。

为了清楚起见,userTwo.isAcctive.append(false) 是我的错误所在。

任何帮助将不胜感激!

struct User {
  let name: String
  let email: String?
  var followers: Int
  var isActive: Bool

  init(name: String, email: String, followers: Int, isActive: Bool){
    self.name = name
    self.email = email
    self.followers = followers
    self.isActive = isActive
  }

  func logStatus(){
    if isActive == true{
    print("\(name) is working hard.")
    } else {
      print("\(name) has left the earth.")
    }
  }
}

var userOne = User(name: "Richard", email:("") , followers: 0, isActive: false)

var userTwo = User(name: "Elon", email:("elon@tesla.com") , followers: 2100, isActive: true)
print(userTwo.isActive)
userTwo.isActive.append(false)

userOne.logStatus()
userTwo.logStatus()

【问题讨论】:

  • 你不想“追加”它——你想改变它。只需说userTwo.isActive = false 就可以完成这项工作。原始类型没有附加历史记录。
  • 它不是使用附加函数的数组。它就像一个具有 TRUE 或 FALSE 值的原始元素。只需使用 userTwo.isActive = false。 .append 用于数组、字符串等
  • 这是有道理的。我现在可以前进了。非常感谢!

标签: swift struct boolean append


【解决方案1】:
struct User {
    var name :String
    var email :String?
    var followers :Int
    var isActive :Bool
    
    
        init(name: String, email: String?, followers: Int, isActive: Bool){
        self.name = name
        self.email = email!
        self.followers = followers
        self.isActive = isActive
  }
  
  func logStatus() {
      if isActive == true {
          print("\(name) is working hard")
      }
      else {
          print("\(name) has left earth")
      }
  }
}

let userOne = User(name: "Richard", email:("richard@virgin"), followers: 0, isActive: false)
userOne.logStatus()
    
    print("\nDiagnostic code (i.e., Challenge Hint):")
    var musk = User(name: "Elon", email: "elon@tesla.com", followers: 2001, isActive: true)
    musk.logStatus()
    print("Contacting \(musk.name) on \(musk.email!) ...")
    print("\(musk.name) has \(musk.followers) followers")
    
    musk.isActive = false
    musk.logStatus()

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
【解决方案2】:

追加是向数组添加一个新元素。我认为您想更改 isActive 属性。你可以这样做:

var userTwo = User(name: "Elon", email:("elon@tesla.com") , followers: 2100, isActive: true)
userTwo.isActive = false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2021-04-24
    • 2014-11-07
    • 2015-07-02
    • 2019-04-09
    相关资源
    最近更新 更多