Swift结构属性访问

Swift结构属性访问,swift,struct,swiftui,Swift,Struct,Swiftui,你能告诉我为什么不能用structs属性替换幻数吗自我.按钮化不起作用 struct ContentView: View { @State var buttonSize = 80 var body: some View { VStack { Button(action: { }) { Text("Hello world") .frame(

你能告诉我为什么不能用structs属性替换幻数吗<代码>自我.按钮化不起作用

struct ContentView: View {
    @State var buttonSize = 80

    var body: some View {


        VStack {
            Button(action: {
            }) {

                Text("Hello world")
                    .frame(width: self.buttonSize, height: 80)
            }
        }
    }

}

谢谢

您只需将
按钮化
声明为
CGFloat
,因为这是
宽度
的预期类型

@State var buttonSize: CGFloat = 80

什么不起作用,你有错误吗?为什么有时我需要定义数据类型,但有时不需要?@user2641891 Swift使用类型推断,因此编译器总是尝试推断变量的类型。如果编译器由于某些不明确或在处理数字文本时无法自行执行此操作,如果要更改推断类型,则必须对变量进行类型注释。编译器将所有整数文本推断为
Int
,因此
var buttonize=80
将是
Int
类型,而不带类型注释。但是,如果您键入annotate
buttonize
作为
CGFloat
,它将是
CGFloat
类型,因为编译器可以简单地将
Int
传递给
CGFloat
初始化器感谢您的帮助,您认为最好的做法是键入hint吗?@user2641891否。让编译器完成它的工作,不要在代码中使用不必要的类型注释产生不必要的干扰。仅在必要时使用类型注释。