【问题标题】:How do you make an equation in swift with multiple variables? [closed]您如何快速制作具有多个变量的方程式? [关闭]
【发布时间】:2021-06-18 06:02:02
【问题描述】:

我正在尝试做一些事情,并且我正在尝试在 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”的参数以及另一个错误:未终止的字符串文字

我不确定为什么以及每当我用谷歌搜索时,永远不会出现实际结果,而当出现时,总是关于 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()
    }
}

'''

【问题讨论】:

  • 这段代码你在哪里写的?
  • 我已经在 Xcode 的 .swift 文件中编写了它。
  • 好。但是每个代码都写在 .swift 文件中,但是在哪里呢?在功能上,在课堂上???在哪里?
  • 请显示实际代码,而不是摘录。你需要帮助吗?您需要提供足够的代码让我们陷入与您完全相同的困境:不多也不少。请阅读minimal reproducible example 并考虑一下。
  • 不要在 cmets 中发布代码。编辑您的问题并在那里发布您的代码

标签: swift variables equation


【解决方案1】:

我看到了一些错误:

  1. /1005.967 中的 / 运算符后面需要一个空格 - 可能还有其他类似的位置。
  2. 在表达式末尾附近,您有一个浮动的sin,它前面没有运算符,后面根本没有括号
  3. 有很多地方你只提到d,但可能是指calculation.d
  4. 您的左括号和右括号的数量不匹配。
  5. 您实际上并没有在您的视图上定义 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。也许您想对所有内容都使用DoubleFloat?当您开始分解指令时,您会看到编译器开始发现更多错误,一旦它可以正确解析所有内容,您将最终导致现有表达式中的 Int 和 Double 等内容之间的类型不匹配。

【讨论】:

  • 谢谢!您可能已将我的代码从变成无用的代码行中拯救了出来!
  • 2sin 之后可能应该是“平方”。
  • “然后,我将计算分解成更小的表达式,这些表达式更易读,更易于调试”(我改写斜体部分),这是最重要的部分的答案!剩下的就是关于错误修复。不是“编写代码的方式”。
  • 感谢您的所有建议和反馈!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-09
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
  • 1970-01-01
相关资源
最近更新 更多