【问题标题】:defrecord with empty constructor带有空构造函数的 defrecord
【发布时间】:2014-07-25 06:30:40
【问题描述】:

我在一个简单的例子中使用了 defrecord,比如说:

 (defrecord Person [fname lname address])

我正在使用一个需要 0 参数构造函数的工具,因此尝试在 JVM 上使用上述内容会导致:

 CompilerException java.lang.RuntimeException: 
   Couldn't find 0-params constructor for class: 
       class user.Hello, compiling:(form-init5503453667732926891.clj:1:13) 

生成 0 参数构造函数的最快/最漂亮的方法是什么?

【问题讨论】:

    标签: clojure


    【解决方案1】:

    您应该将此记录视为此类:

    class Person {
        final Object fname;
        final Object lname;
        final Object address;
    
        public Person(final Object fname, final Object lname, final Object address) {
            this.fname = fname;
            this.lname = lname;
            this.address = address;
        }
    }
    

    它是不可变的,所有字段都为 final 等。

    看看这个flowchart for choosing the right Clojure type definition form。

    【讨论】:

      猜你喜欢
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-20
      • 1970-01-01
      • 2011-03-21
      • 1970-01-01
      • 2020-01-29
      相关资源
      最近更新 更多