提问人:gnuchanos 提问时间:10/28/2023 更新时间:10/31/2023 访问量:78
raylib nim 我今天学习这门语言,我有很多问题
raylib nim i learn this language today i have to much problem
问:
code
https://pastebin.pl/view/a021251b
question
在尝试修复它时,我需要解释这个错误,但我不能,而且我太累了,我已经尝试修复了 7 个小时。
1 - 表达式 '' 没有类型(或不明确) 2 - 未声明的字段:“y” 3 - 类型不匹配
question
4 - 表达式:+= 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)
question
5 - 表达式“astro”没有类型(或不明确)
谭尔斯好人
我在谷歌中搜索这个错误是什么意思,但我仍然无法修复我更改,但我不知道
我搜索我的问题,但我仍然无法解决,我来到这里,我今天开始学习 NIM
答:
我不知道你是怎么得到这个代码的,但它充满了错误。
“没有类型...”,然后给它一个类型。
您在不阅读手册的情况下构建对象。在 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)
这导致我们出现“类型不匹配:”,就像 一样,而不是预期的:
astro_texture
Image
Texture2D
AstroObject
var astro_texture: Texture2D = loadTextureFromImage( loadImage("img/astro.png"))
现在我们有另一个“类型不匹配:'astroSpeed' 的 'int' 但预期的 'float'”。刚投:
var astroSpeed = float(random.rand(1..4))
现在我们得到:“错误:未声明的标识符:'astro'”在 L82 处,结果证明是一个真正的手段。
if astro in astros
for astro in astros
这很痛:“错误:未声明的标识符:'astrp'”在 L83 处。
现在,L83 处出现“错误:类型不匹配”。当它已经是浮点数并且 astro.y 需要一个 int 时,为什么你要转换为浮点数?将该行更改为:
astro.speed
astro.y += int(astro.speed)
最后,我们得出了一个适当的错误,可能会让任何人感到困惑:
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.y
astro.y
var int
type AstroObject = ref object
回到难以理解的错误:“错误:未声明的标识符:'随机'”。你不打电话,你打电话:
random
rand
astro.y = -rand(1..1000) astro.x = rand(1..906) astro.speed = float(rand(1..4))
(注意铸件浮动)。
给你。假设您拥有所有需要的库,它应该可以工作。下次,你应该尝试一步一步地引入代码,让每个代码都能正常工作,然后再添加大量代码,然后出现几十个错误、错别字和缺乏类型。
评论