crystal-lang - 没有重载与 Person 类型匹配 'Array(Person)#+'

标签 crystal-lang

所以我刚开始学习 Crystal,因为我喜欢 Ruby 和 C,但我还不能掌握语法。我想我已经很接近了,但我被这个错误困住了。
没有重载匹配 Person 类型的 'Array(Person)#+' 重载是: - 阵列(T)#+(其他:阵列(U)) people += Person.new("Person#{id}")

这是代码。

class Person
    def initialize(name : String)
        @name = name
        @age = 0
    end

    def name
        @name
    end

    def age
        @age
    end
end

people = [] of Person
counter = 0
id = 0

loop do
    id+=1
    people += Person.new("Person#{id}")

    counter+=1
    break if counter = 5
end

puts(people)

我做错了什么? 提前致谢!

最佳答案

您正试图将一个数组和一个人放在一起。但是你可以添加 Array to Array only.

解决它,你应该使用Array#<< , 像这样: people << Person.new("Person#{id}")

注意:检查您的第 25 行,它应该是 break if counter == 5

关于crystal-lang - 没有重载与 Person 类型匹配 'Array(Person)#+',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48751355/

相关文章:

crystal-lang - 是否有其他选择以更严格的范围开始/结束?

crystal-lang - 如何从 Crystal 中的字符串名称创建类实例?

ruby - 是否可以为 Ruby 创建 Crystal 绑定(bind)?

crystal-lang - 如何在 Crystal 中连接字节

crystal-lang - 如何读取晶体中其他尺寸的切片?

macos - Crystal 构建失败并显示 "ld: library not found for -lssl"

dart - 为什么Dart无法从Crystal解码base64?

type-inference - 无法推断 Document 的实例变量 '@id' 的类型