我无法访问 defrecord 对象的内部字段。所有标准方法都会返回 nil

问题描述 投票:0回答:1

本质上,我有一个名为

sample-cell
的“Cell”对象,输出时看起来像这样
[#grid_generator.core.Cell{:coordinates [1.0 1.0], :value 3.0}]
。我只是想访问其中的
:coordinates
字段。每当我尝试
(:coordinates sample-cell)
时,我都会得到“nil”。

我一生都无法弄清楚为什么我的代码不起作用。我也尝试过

get-in
得到相同的结果(以防万一存在嵌套问题),但我仍然遇到同样的问题。这是我的第一个项目,所以我预计会遇到一些麻烦。任何帮助表示赞赏!谢谢!

functional-programming clojure lisp
1个回答
0
投票

正如 Harold 所说,您的记录似乎是在命名空间

grid_generator.core.Cell
中创建的,因此关键字的正确(完全限定)名称是
:grid_generator.core.Cell/coordinates

因此,正确的语法是:

(:grid_generator.core.Cell/coordinates sample-cell)

或者,如果您有这样的别名:

(ns xxx.yyy
  (:require [grid_generator.core.Cell as cell] ...))

您可以使用更短的语法,例如

(:cell/coordinates sample-cell)

请修改您的问题以添加命名空间和

defrecord
语句的其他详细信息,并且还请验证(带评论)上述内容是否解决了您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.