是否有省略包名的写法

按照现在的文档例子引用另一个模块的函数, 比如从 react 引用 div, 我就要写成 @react.div() 才行, 用于 DSL 的场景, 反复写这个包名有一些影响代码可读性. 是否有简写的语法可以直接绑定 div() 来使用?

目前只有enum constructor在能够被推导类型时,才可以省略包名。

对于使用另一个包的函数需要频繁声明包名的问题,后续可能会引入类似的功能:

use {div, h1} from @html

这个特性还待讨论

1 个赞

跟包名这个写法有点关联, 我觉得 Swift 这个语法挺有用的, 现在包名导致匹配写得很长, 即便去掉包名, variant 的名字可能还是需要从外部导入然后才能写, 并且也可能比较长. Swift 有一个语法在一些场景可以简化, 比如这个:

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/enumerations/#Associated-Values

enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}

switch productBarcode {
case .upc(let numberSystem, let manufacturer, let product, let check):
    print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).")
case .qrCode(let productCode):
    print("QR code: \(productCode).")
}

Moonbit 当中类型信息是挺丰富的, 是否能参考这个用法, 在已经推断到类型的位置, 通过一个语法直接提示选择填写 variant, 从而简化编码?

enum constructor已经是支持了省略包名和类型,让moonbit自己推导的,不需要写.来暗示编译器

1 个赞

这个很实用. 引用的依赖的 construct 也正常导入了.

顺便问问对于其他比如参数等位置还有类似的简化写法的计划么. 看上去还有一些也支持了.

let wrap_event : RespoEvent = Focus(e)

labelled argument 这里也有, 但是自动补全不出来… 所以没注意到, 有点奇怪.