【问题标题】:Apply to value to class inside def and send it to another val at another class将值应用于 def 中的类并将其发送到另一个类的另一个 val
【发布时间】:2023-10-12 13:06:01
【问题描述】:

希望你做得很好,我刚刚开始了一个基本的 scala 编程来创建 API。所以我有以下代码的模型产品:

import.blablabla._
case class Product(prodId:Int, prodBig:int, prodPcs:Int, price:Int, resProd:Double)

object Product{
  def add(prodId:Int, prodBig:int, prodPcs:Int): Product = {
    Storage.cnts(prodBig, prodPcs)
    var resProd = ?????????
    val price = 4000
    val resJsn = Product(clientId, prodBig, prodPcs, price, resProd)
    Ok(Json.obj("result" -> resJsn)).withHeaders(
              AUTHORIZATION -> endtoken)
      }

其他类的代码如下:

import.blablabla._
case class Storage (resProd: Double)    

    object Storage {
          def cnts(prodBig:Int, prodPcs:Int) {
            val prod = prodPcs/prodBig
            ??????????
          }
        }

我的问题是: 如何将 prod 的值应用于 resProd?以及如何将 Storage (resProd) 值应用于 Product 类的 resProd?

如果您有使用 java 或 scala 的经验,我相信这很容易回答。谢谢:)

【问题讨论】:

    标签: scala class object call send


    【解决方案1】:

    如果您想通过调用cnts 手动更新Storage.resProd,我认为这不是一个好主意。代码中的伴侣对象 object Storage 适用于工厂方法。

    所以我推荐
    1.在cnts中新建Stroage:

    def cnts(prodBig:Int, prodPcs:Int) {
        val prod = prodPcs/prodBig
        new Storage(prod)
    }
    

    2。将 cnts 移至 Storage 类:

    case class Storage (var resProd: Double) {
       // some update method comes here
    }
    

    【讨论】:

    • 嗨亲爱的,谢谢你的建议。另一个问题是如何将 Storage 类的 resProd 值调用为 Product Object?
    • @DedenBangkit 只需调用 resProd val prod = Storage.cnts(prodBig, prodPcs).resProd 因为 resProd 在这里是一个公共值。
    最近更新 更多