HarmonyOS 鸿蒙Next在类中声明了一个带横杠的变量,constructor中怎么取这个值?

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next在类中声明了一个带横杠的变量,constructor中怎么取这个值?

例如,class Text {

public ‘a-b’ : string

constructor(c: string) {

this.[‘a-b’] = c

}

}

这种情况会报错,应该怎么给’a-b’赋值呢?

3 回复

使用Object()

代码

class MyText60 {
  public 'a-b': string

constructor(c: string) { Object(this)[‘a-b’] = c } }

@Entry @Component struct Page60 { build() { Column() { Button(‘测试’).onClick(() => { let mText = new MyText60(‘测试123’) console.info(a-b:${<span class="hljs-built_in"><span class="hljs-built_in">Object</span></span>(mText)[<span class="hljs-string"><span class="hljs-string">'a-b'</span></span>]}) }) } .height(‘100%’) .width(‘100%’) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

打印

a-b:测试123<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

在HarmonyOS(鸿蒙)或任何Java/Kotlin支持的环境中,Java变量命名不允许直接使用横杠(-)作为标识符的一部分。如果看到代码中有类似带横杠的变量名,这通常是通过某种方式(如注解或XML配置)间接表示的,或者是使用了某种命名约定(如驼峰命名法来模拟横杠,例如myVariableName代替my-variable-name)。

对于直接在Java或Kotlin类中声明的变量,你需要遵循合法的命名规则。如果需要在constructor中访问该变量,只需按照正常变量名访问即可。如果确实需要处理类似带横杠的标识符(在XML等资源文件中常见),则通常在代码中通过转换或映射来处理。

如果问题依旧没法解决请加我微信,我的微信是itying888。

回到顶部