【问题标题】:Cannot get and set value using completion block in Xcode 10.1无法使用 Xcode 10.1 中的完成块获取和设置值
【发布时间】:2019-01-11 07:43:13
【问题描述】:

我正在使用 Xcode 10.1,我尝试通过设置另一个称为直径的变量的值来计算完成块中的半径。代码如下

import UIKit
import Foundation

var radius:Double = 10
var diameter: Double{
    get{
        return radius * 2
    }
    set{
        radius = newValue
    }
}
diameter = 30
print(diameter)

我期望输出应该是 60.0 但它显示:

错误:计算属性.playground:43:1:错误:当前变量 在 REPL 的顶层输入时必须有一个初始值 var area: 双{

输出在 swift 的在线编译器中正确显示,但在 Xcode 中没有。现在如何获得正确的输出?

【问题讨论】:

  • 我在 Xcode10 中执行此代码,它工作正常并给出输出 60 ,该错误显示在操场上
  • 我尝试了几种方法,但我无法修复它。我是 swift 的新手,不知道如何从中受益。

标签: swift


【解决方案1】:

您必须在类或结构中编写此代码,然后创建类或结构的对象,然后您必须分配直径值并打印它。

   /**
    This code you can run in playground
    */
            class Demo {
                var radius:Double = 10
                var diameter: Double {
                    get{
                        return radius * 2
                    }
                    set{
                        radius = newValue
                    }
                }

            }

            let d = Demo()

            d.diameter = 30
            print(d.diameter)

           //Output
           60.0

    /**
    This code you can run in Xcode.
    */
    class ViewController: UIViewController {
        var radius:Double = 10
        var diameter: Double {
            get{
                return radius * 2
            }
            set{
                radius = newValue
            }
        }

        override func viewDidLoad() {
            super.viewDidLoad()
            diameter = 30
            print(diameter) // Output: 60.0
        }
    }

【讨论】:

  • 我知道可以通过使用类或结构来完成,但我希望解决这个特定的错误相关问题。
  • 这是仅使用类或结构解决的问题,如果您想了解更多信息,可以使用stackoverflow.com/questions/51362893/…
猜你喜欢
  • 2020-03-30
  • 1970-01-01
  • 2015-12-21
  • 2016-03-01
  • 1970-01-01
  • 2023-01-05
  • 1970-01-01
  • 1970-01-01
  • 2020-10-28
相关资源
最近更新 更多