代码之家  ›  专栏  ›  技术社区  ›  missingfaktor Kevin Wright

Scala 2.8-命名参数的潜在问题

  •  1
  • missingfaktor Kevin Wright  · 技术社区  · 16 年前

    考虑以下代码:

    // My code
    class Person(var age: Int)
    
    // Client's code
    object Main {
      def main(args: Array[String]) {
        val p = new Person(age = 18)
        println(p.age)
      }
    }
    

    现在我需要为 age 领域

    但是,尝试执行以下操作是不合法的,因为字段名和方法名在Scala中共享相同的命名空间:

    // *** DOES NOT COMPILE ***
    // My code
    class Person(age: Int) {
      def age = /* some code that gives integer */
    }
    
    // Client's code
    object Main {
      def main(args: Array[String]) {
        val p = new Person(age = 18)
        println(p.age)
      }
    }
    

    所以我需要重命名构造函数参数 年龄 或我的领域 年龄 . 不管怎样,我都会破坏客户端代码,不是吗?

    是否有任何可能的解决方法?或者这是命名参数的固有问题?

    请解释一下这件事。任何帮助都将不胜感激。

    谢谢

    1 回复  |  直到 13 年前
        1
  •  2
  •   Randall Schulz    16 年前

    第二个代码块 编译,前提是在 /* some code that gives integer */ 占位符注释。