首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我想在等式中使用@Binding变量

我想在等式中使用@Binding变量
EN

Stack Overflow用户
提问于 2020-01-15 13:59:47
回答 1查看 67关注 0票数 0
代码语言:javascript
复制
struct FinanceOutput: View {
@Binding var price: Double
@Binding var down: Double
@Binding var apr: Double  
private var rate: Double = 0.0     
init(price: Binding<Double>, down:Binding<Double>, apr:Binding<Double>, of rate: Double ) {                
  self._price = price
  self._down = down
  self._apr = apr          
 self.rate = rate       
}

上面是我的代码,我确实在另一个视图中正确定义了@Binding变量--使用@State。

我想做的是在等式中使用'rate‘来定义'apr/12’。我想我以前在Xcode的早期版本中解决了这个问题,但现在我得到的只是:“不能在属性初始化器中使用实例成员'apr‘;属性初始化器在'self’可用之前运行。”我知道我正在使用绑定类型,但即使我使用Double()更改类型,我仍然会得到错误。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-15 16:04:02

在init()完成之前,您似乎正在尝试访问struct中的某个属性,例如:

代码语言:javascript
复制
struct FinanceOutput: View {
    @Binding var price: Double
    @Binding var down: Double
    @Binding var apr: Double

    private var rate: Double = 0.0

    init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
        self._price = price
        self._down = down
        self._apr = apr
        self.rate = rate
    }

    apr = rate // error: Cannot use instance member 'apr' within property initializer; property initializers run before 'self' is available.

    var body: some View {
        Text("\(apr/rate)")
    }
}

您可以从正文中访问'rate‘属性,例如:

代码语言:javascript
复制
let input = Input(price: 10.0, down: 10.0, apr: 10.0)

struct FinanceOutput: View {
    @Binding var price: Double
    @Binding var down: Double
    @Binding var apr: Double

    private var rate: Double = 0.0

    init(price: Binding<Double>, down: Binding<Double>, apr: Binding<Double>, of rate: Double) {
        self._price = price
        self._down = down
        self._apr = apr
        self.rate = rate
    }

    var body: some View {
        Text("\(apr/rate)") // shows apr/rate properly
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        FinanceOutput(price: input.$price, down: input.$down, apr: input.$apr, of: 12.0)
    }
}

struct Input: View {
    @State var price: Double
    @State var down: Double
    @State var apr: Double

    var body: some View {
        Text("\(price), \(down), \(apr)")
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59745843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档