raylib nim 我今天学习这门语言,我有很多问题

raylib nim i learn this language today i have to much problem

提问人:gnuchanos 提问时间:10/28/2023 更新时间:10/31/2023 访问量:78

问:

code https://pastebin.pl/view/a021251b

question在尝试修复它时,我需要解释这个错误,但我不能,而且我太累了,我已经尝试修复了 7 个小时。 1 - 表达式 '' 没有类型(或不明确) 2 - 未声明的字段:“y” 3 - 类型不匹配

question4 - 表达式:+= astro.speed [1] : [2] astro.speed: 预期的 ([位置] 处的第一个不匹配): [1] proc +=[T: SomeInteger](x: var T; y: T) [1] proc +=[T: float | float32 | float64](x: var T; y: T) [1] template +=[T: Vector2 |向量3 |四元数 |矩阵](v1: var T; v2: T) [1] 模板 +=[T: Vector2 |向量3 |四元数](v1: var T;值: cfloat)

question5 - 表达式“astro”没有类型(或不明确) 谭尔斯好人 我在谷歌中搜索这个错误是什么意思,但我仍然无法修复我更改,但我不知道 我搜索我的问题,但我仍然无法解决,我来到这里,我今天开始学习 NIM

NIM-LANG 雷利库

评论


答:

0赞 xbello 10/30/2023 #1

我不知道你是怎么得到这个代码的,但它充满了错误。

  1. “没有类型...”,然后给它一个类型。

  2. 您在不阅读手册的情况下构建对象。在 L46,您拥有:

    var astroObject = AstroObject(astro_texture, astro_x, astro_y, astroSpeed)
    

    手册显示了这一点

    var a1 = Student(name: "Anton", age: 5)
    

    将 L46 处的构造更改为:

    var astroObject: AstroObject = AstroObject(
      texture: astro_texture,
      x: astro_x,
      y: astro_y,
      speed: astroSpeed)
    
  3. 这导致我们出现“类型不匹配:”,就像 一样,而不是预期的:astro_textureImageTexture2DAstroObject

    var astro_texture: Texture2D = loadTextureFromImage( 
      loadImage("img/astro.png"))
    
  4. 现在我们有另一个“类型不匹配:'astroSpeed' 的 'int' 但预期的 'float'”。刚投:

    var astroSpeed = float(random.rand(1..4))
    
  5. 现在我们得到:“错误:未声明的标识符:'astro'”在 L82 处,结果证明是一个真正的手段。if astro in astrosfor astro in astros

  6. 这很痛:“错误:未声明的标识符:'astrp'”在 L83 处。

  7. 现在,L83 处出现“错误:类型不匹配”。当它已经是浮点数并且 astro.y 需要一个 int 时,为什么你要转换为浮点数?将该行更改为:astro.speed

     astro.y += int(astro.speed)
    
  8. 最后,我们得出了一个适当的错误,可能会让任何人感到困惑:

    Error: type mismatch
    Expression: astro.y += int(astro.speed)
    Expected one of (first mismatch at [position]):
    proc `+=`[T: SomeInteger](x: var T; y: T)
    

    为什么编译器声称两个 int 不是 int?原来是不可变的,但你想改变它(即编译器想成为一个)。将 Object 更改为 Mutable 或 Ref Object:astro.yastro.yvar int

    type AstroObject = ref object
    
  9. 回到难以理解的错误:“错误:未声明的标识符:'随机'”。你不打电话,你打电话:randomrand

    astro.y = -rand(1..1000)
    astro.x = rand(1..906) 
    astro.speed = float(rand(1..4))
    

    (注意铸件浮动)。

给你。假设您拥有所有需要的库,它应该可以工作。下次,你应该尝试一步一步地引入代码,让每个代码都能正常工作,然后再添加大量代码,然后出现几十个错误、错别字和缺乏类型。