【问题标题】:instance var of CategoryController must be (Array(Array(Array(Int64 | String) | Array(String))) | Nil)CategoryController 的实例变量必须是 (Array(Array(Array(Int64 | String) | Array(String))) | Nil)
【发布时间】:2019-05-03 09:55:43
【问题描述】:

无法存储包含在 abc 中的数据。 它显示错误

CategoryController 的实例变量 @ar 必须是 (Array(Array(Array(Int64 | String) | Array(String))) | Nil),而不是 Array(Array(Int64 | String) | Array(String)))

代码示例:

 abc = [["", "Select"], [6_i64, "some"]]

 puts abc.class # => Array(Array(Int64 | String) | Array(String))

 @ar = [] of Array(Array(Int64 | String) | Array(String))

 @ar = abc # showing error

【问题讨论】:

  • 我很确定错误消息已经在您第一次分配@ar 的位置上,因为文字值与abc 具有相同的类型。但是,错误消息清楚地指出实例变量的(预期)类型与您尝试分配的实际类型不匹配。分配的值是数组的项类型,可以添加到数组@ar,但不能分配给持有这种数组类型的变量。

标签: crystal-lang amber-framework


【解决方案1】:

代码正在运行here,需要更多上下文来找出错误。而且,cmets 应该使用# Comment here

猜测是CategoryController 中的@ar 定义不正确。

【讨论】:

  • 我用不同的模式尝试了同样的方法,但它不适用于实例数组变量。
  • 要尝试解决这个问题,请显示CategoryController 类代码
  • code CategoryController < ApplicationController getter category = Category.new def new abc = [["", "Select"], [6_i64, "parent"]] puts "-------------------------------->" puts abc puts abc.class @ar = [] of Array(Array(Int64 | String) | Array(String)) @ar = abc render "new.slang" end end
猜你喜欢
  • 2019-11-23
  • 1970-01-01
  • 2022-07-22
  • 1970-01-01
  • 1970-01-01
  • 2020-08-31
  • 2016-01-16
  • 1970-01-01
  • 2019-03-30
相关资源
最近更新 更多