如何用多个变量在 swift 中建立方程式?
How do you make an equation in swift with multiple variables?
我正在尝试做一些事情,我正在尝试使用 Swift 中的方程式。这是等式:
((((((((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * ((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) /1005.967 * (3.14159 * ((d / 100)/2) * ((d / 100)/2)))) - (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2) * calculation.g) / (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2)) * ((1005.967 * (calculation.vol / 1000000) / (((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * 6894.76))))) * 2) sin 2(calculation.theta) / calculation.g) * (1 - calculation.dc))
这可能看起来很复杂,但如果您理解它,它就不是(对于计算机)。所有变量都已定义,错误消息显示:
调用中缺少参数 'verbatim' 的参数和另一个错误:未终止的字符串文字
我不确定为什么以及每当我 google 它出现时,实际结果永远不会出现,而当出现时,它总是关于 Playgrounds,而不是用于制作应用程序的实际 Swift和东西。
编辑:
这是可重现的例子:
'''
//
// ContentView.swift
// MRE File
//
// Created by Go Peter on 2021/06/18.
//
import SwiftUI
struct Calculation {
var vbottle:Int = 2
var g:Int = Int(9.807)
var vol:Int = 250
var d:Int = 2
var theta:Int = 90
var psi:Int = 40
var mempty:Int = 70
}
struct ContentView: View {
var body: some View {
Text("\(((((((((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * ((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) /1005.967 * (3.14159 * ((d / 100)/2) * ((d / 100)/2)))) - (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2) * calculation.g) / (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2)) * ((1005.967 * (calculation.vol / 1000000) / (((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * 6894.76))))) * 2) sin 2(calculation.theta) / calculation.g) * (1 - calculation.dc)))m")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
'''
我看到了一些错误:
- 您需要在
/1005.967
中的 /
运算符之后添加一个 space -- 可能还有其他类似的位置。
- 在表达式末尾附近,有一个浮动
sin
,它前面没有运算符,后面根本没有括号
- 有很多地方你指的只是
d
,但可能是指 calculation.d
- 您的左括号和右括号数量不匹配。
- 您实际上并没有在您的视图中定义
Calculation
属性,因此目前还没有任何计算可做。
因为我不知道其中一些内容的意图,所以我无法真正为您修复它。但是,我建议尝试稍微清理一下代码 —— 至少,它会更容易调试。
首先,将其从插值 String
移出并移入计算 属性:
var calc : Int { //Int? -- see comment about this
//your calculation here
}
var body: some View {
Text("\(calc)m")
}
然后,我会将计算分解为 很多 更小的表达式,这些表达式更具可读性,并且比尝试筛选这么多括号更容易让您发现错误,等。即使计算机理论上可以处理长而难以阅读的表达式,这对我们人类来说也是一个具有挑战性的调试问题。
如果您真的想要 Int
这些属性,我也会感到非常惊讶。你有很多地方在做 Int(0.98)
之类的事情,这没有意义,因为它会四舍五入到 1
。也许您想要对所有内容使用 Double
或 Float
?当您开始分解指令时,您会看到编译器一旦能够正确解析所有内容就会开始发现更多错误,您最终会在现有表达式中的 Int 和 Double 等类型之间出现类型不匹配。
我正在尝试做一些事情,我正在尝试使用 Swift 中的方程式。这是等式:
((((((((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * ((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) /1005.967 * (3.14159 * ((d / 100)/2) * ((d / 100)/2)))) - (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2) * calculation.g) / (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2)) * ((1005.967 * (calculation.vol / 1000000) / (((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * 6894.76))))) * 2) sin 2(calculation.theta) / calculation.g) * (1 - calculation.dc))
这可能看起来很复杂,但如果您理解它,它就不是(对于计算机)。所有变量都已定义,错误消息显示:
调用中缺少参数 'verbatim' 的参数和另一个错误:未终止的字符串文字
我不确定为什么以及每当我 google 它出现时,实际结果永远不会出现,而当出现时,它总是关于 Playgrounds,而不是用于制作应用程序的实际 Swift和东西。
编辑:
这是可重现的例子:
'''
//
// ContentView.swift
// MRE File
//
// Created by Go Peter on 2021/06/18.
//
import SwiftUI
struct Calculation {
var vbottle:Int = 2
var g:Int = Int(9.807)
var vol:Int = 250
var d:Int = 2
var theta:Int = 90
var psi:Int = 40
var mempty:Int = 70
}
struct ContentView: View {
var body: some View {
Text("\(((((((((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * ((((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) /1005.967 * (3.14159 * ((d / 100)/2) * ((d / 100)/2)))) - (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2) * calculation.g) / (((calculation.mempty/1000) + ((calculation.vol * 0.972)/1000))/2)) * ((1005.967 * (calculation.vol / 1000000) / (((calculation.d/100)/2) * Int(0.98) * (sqrt(calculation.vbottle * 1005.967 * (calculation.psi + (calculation.psi * (calculation.vbottle - (calculation.vol/1000))/2)/2) * 6894.76))))) * 2) sin 2(calculation.theta) / calculation.g) * (1 - calculation.dc)))m")
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
'''
我看到了一些错误:
- 您需要在
/1005.967
中的/
运算符之后添加一个 space -- 可能还有其他类似的位置。 - 在表达式末尾附近,有一个浮动
sin
,它前面没有运算符,后面根本没有括号 - 有很多地方你指的只是
d
,但可能是指calculation.d
- 您的左括号和右括号数量不匹配。
- 您实际上并没有在您的视图中定义
Calculation
属性,因此目前还没有任何计算可做。
因为我不知道其中一些内容的意图,所以我无法真正为您修复它。但是,我建议尝试稍微清理一下代码 —— 至少,它会更容易调试。
首先,将其从插值 String
移出并移入计算 属性:
var calc : Int { //Int? -- see comment about this
//your calculation here
}
var body: some View {
Text("\(calc)m")
}
然后,我会将计算分解为 很多 更小的表达式,这些表达式更具可读性,并且比尝试筛选这么多括号更容易让您发现错误,等。即使计算机理论上可以处理长而难以阅读的表达式,这对我们人类来说也是一个具有挑战性的调试问题。
如果您真的想要 Int
这些属性,我也会感到非常惊讶。你有很多地方在做 Int(0.98)
之类的事情,这没有意义,因为它会四舍五入到 1
。也许您想要对所有内容使用 Double
或 Float
?当您开始分解指令时,您会看到编译器一旦能够正确解析所有内容就会开始发现更多错误,您最终会在现有表达式中的 Int 和 Double 等类型之间出现类型不匹配。