微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

大写文件名的意义是什么?

如何解决大写文件名的意义是什么?

我正在尝试通过以下方式在Nim中实现“静态”功能

# File: OtherObject.nim
type OtherObject* = ref object of RootObj

proc mystatic*(_: typedesc[OtherObject]) = echo "Hi"
# File: test.nim
import OtherObject

OtherObject.mystatic()

但是失败,并显示以下错误

Error: type mismatch: got <>
but expected one of:
proc mystatic(_: typedesc[OtherObject])

但是如果我将OtherObject.nim重命名otherObject.nim并不会失败...文件名以大写字母开头的意义是什么? (在Windows上为Nim 1.4.0上。)

解决方法

这很可能与模块和类型符号之间的冲突有关,与文件的大小写无关。

例如这个例子:

file.nimm

type file* = object
proc mystatic*(_: typedesc[file]) = discard

test.nim

import file

file.mystatic()
# Error: type mismatch: got <>
# but expected one of:
# proc mystatic(_: typedesc[file])

# expression: file.mystatic()

mystatic(file)
# Error: type mismatch: got <void>
# but expected one of:
# proc mystatic(_: typedesc[file])
#   first type mismatch at position: 1
#   required type for _: type file
#   but expression 'file' is of type: void

# expression: mystatic(file)

给出相同的错误。如果不能仅通过名称就明确地解析符号,则其类型为void。重命名后,名称冲突就消失了,一切正常。

Ps:例如,在nim中没有static具有与C++相同的含义。没有只能从特定对象访问的全局状态。要执行类似的操作,您可以在模块中使用全局变量,而无需导出(或导出)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。