mirror of
https://github.com/erg-lang/erg.git
synced 2025-09-28 04:09:05 +00:00
2.4 KiB
2.4 KiB
提示
想要更改显示错误的语言
请为您的语言下载 Erg 但是,外部库可能不支持多种语言
只想更改记录的某些属性
record: {.name = Str; .age = Nat; .height = CentiMeter}
{height; *rest} = record
mut_record = {.height = !height; *rest}
想要隐藏变量
使用 Erg 无法在相同范围内进行遮蔽。但是,如果范围发生变化,您可以重新定义它们(这是一种称为实例块的语法)
## 获取一个 T!-type 对象,最后将它作为 T 类型赋值给一个变量
x: T =
x: T! = foo()
x.bar!()
x.freeze()
想以某种方式重用最终类(不可继承的类)
您可以创建一个包装类。这就是所谓的构图模式
FinalWrapper = Class {inner = FinalClass}
FinalWrapper.
method self =
self::inner.method()
...
我想在1开头枚举
方法一:
arr = [...]
for! arr.iter().enumerate(start := 1), i =>
...
method 2:
arr = [...]
for! arr.iter().zip(1...) , i =>
...
想要测试一个(白盒)非公共 API
foo.er
中的私有 API 可在 foo.test.er
模块中特别访问
foo.test.er
模块无法导入,因此它保持隐藏状态
# foo.er
private x = ...
# foo.test.er
foo = import "foo"
@Test
'testing private' x =
...
y = foo::private x
...
在实现特征的方法时,会对未使用的变量发出警告
您可以将属性设为私有并定义一个 getter
C = Class {v = Int!}
C::
inc_v!(ref! self) = self::v.inc!()
...
C.
get_v(ref self): Int = self::v.freeze()
...
希望在类型系统上识别参数名称
你可以使用discard
或_ = ...
T = Trait {.f = (Self, x: Int, s: Str) -> Int}
C = Class T
C|<: T|.
f self, x, s =
discard s # or _ = s
...
想要停止警告
Erg 中没有停止警告的选项(这是设计使然)。请重写你的代码