大写文件名的意义是什么?
What is the significance of uppercase file names?
我试图通过这样做在 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 上)。
这很可能与模块和类型符号之间的冲突有关,而不是 upper/lower 文件大小写。
例如这个例子:
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++
。没有只能从特定对象访问的全局状态。要执行这样的操作,您可以只使用模块中的全局变量而不导出它(如果需要,也可以导出)。
我试图通过这样做在 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 上)。
这很可能与模块和类型符号之间的冲突有关,而不是 upper/lower 文件大小写。
例如这个例子:
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++
。没有只能从特定对象访问的全局状态。要执行这样的操作,您可以只使用模块中的全局变量而不导出它(如果需要,也可以导出)。