HarmonyOs DevEco Studio小技巧24--实时模板变量中使用的函数

目录

一、代码结构与元数据相关

annotated()

anonymousSuper()

className()

qualifiedClassName()

methodName()

methodParameterTypes()

methodParameters()

methodReturnType()

二、变量操作相关

arrayVariable()

iterableVariable()

suggestFirstVariableName()

suggestVariableName()

variableOfType()

typeOfVariable()

typeParameterOf(VAR[,indexOrName])

三、文本处理相关

camelCase()

capitalize()

capitalizeAndUnderscore()

decapitalize()

lowercaseAndDash()

snakeCase()

spaceSeparated()

spacesToUnderscores()

underscoresToCamelCase()

underscoresToSpaces()

firstWord()

escapeString()

四、注释相关

blockCommentEnd()

blockCommentStart()

commentEnd()

commentStart()

lineCommentStart()

五、代码补全与类型相关

complete()

completeSmart()

expectedType()

castToLeftSideType()

rightSideType()

六、日期与时间相关

date([format])

time([format])

七、文件操作相关

fileName()

fileNameWithoutExtension()

filePath()

fileRelativePath()

八、数据库操作相关

dbColumns()

dbObjectName()

九、其他杂项

clipboard()

concat(,...)

enum(,...)

groovyScript(, [arg,...])

guessElementType()

iterableComponentType()

substringBefore(, )

subtypes()

suggestIndexName()

user()


一、代码结构与元数据相关

annotated(<annotation>)
  • 用于查找带有特定注释的类、方法或字段,与代码的元数据(注释)相关,可用于代码审查、遵循编码规范等方面的操作。
  • 解释:这个函数用于在项目中查找并返回被特定注释标记的类、方法或字段。例如在 Java 中,如果使用.annotated("java.lang.Deprecated"),就可以找到所有被@Deprecated注释标记的元素。当项目中有多个符合指定注释的元素时,会提供一个列表供选择。这在处理具有特定元数据(通过注释表示)的代码元素时非常有用,比如在代码审查工具中,找出所有被标记为过时的元素以便进行更新或替换。
  • 补充:不同的编程语言或框架可能对注释有不同的处理方式。在一些静态分析工具中,这个函数可以与其他规则结合使用,例如检查被特定注释标记的元素是否遵循了某些编码规范。
anonymousSuper()
  • 特定于 Kotlin 语言,为对象表达式建议超类型,与 Kotlin 的类型结构相关。
  • 解释:专门用于 Kotlin 语言环境。它的作用是为 Kotlin 对象表达式建议超类型。在 Kotlin 中,对象表达式可以继承自某个超类型,这个函数有助于在编写代码时快速确定合适的超类型,提高开发效率并遵循 Kotlin 的类型系统规则。
  • 补充:使用这个函数时,开发环境可能会根据当前的代码上下文(如导入的类、已有的类型层次结构等)来提供更准确的超类型建议。
className()
  • 仅在 Java 中可用,返回当前类的名称,用于在构造函数模板等与类结构相关的操作。
  • 解释:仅在 Java 上下文中可用,用于返回当前类的名称(在其中展开模板)。这对于构造函数模板等场景非常有用,因为在很多情况下,需要根据当前类的名称来生成特定的代码结构(如构造函数调用、类的内部引用等)。
  • 补充:在 Java 的嵌套类结构中,需要准确返回最内层的类名称或者根据需求提供一种表示嵌套关系的名称格式。
qualifiedClassName()
  • 同样仅在 Java 中,返回当前类的完全限定名,与 Java 类的命名结构相关。
methodName()
  • 仅 Java 可用,返回模板所在方法的名称,与方法结构相关。
methodParameterTypes()
  • 仅 Java,返回方法的参数类型列表,与方法的定义结构相关。
methodParameters()
  • 仅 Java,返回方法的参数名称列表,也是关于方法结构的信息。
methodReturnType()
  • 仅 Java,返回方法的返回值类型,属于方法结构相关的函数。

二、变量操作相关

arrayVariable()
  • 用于获取当前范围内最近声明的数组,与数组变量相关。
  • 解释:该函数旨在返回当前范围内最近声明的数组(无论是作为方法变量还是类字段)。在有多个数组声明的情况下,会显示一个可选列表。例如在 Java 方法中声明了多个数组,使用这个函数时,它会默认指向最近声明的数组,但也允许从列表中选择其他数组。这在处理数组相关的操作(如数组迭代)的模板中很有用。
  • 补充:为了准确确定 “最近声明”,可能是根据代码中的声明顺序,从当前执行点向前查找最近的数组声明。在一些复杂的代码结构(如嵌套的代码块)中,这种查找机制需要确保准确性。
iterableVariable()
  • 仅 Java,返回当前作用域中最近声明的可迭代对象,与可迭代变量相关。
suggestFirstVariableName(<String>)
  • 根据给定类型建议变量名,不包含某些特殊值,与变量命名相关。
suggestVariableName()
  • 根据变量类型及其初始值建议变量名,与变量的合理命名相关。
variableOfType(<String>)
  • 返回可能分配给指定类型的所有变量,与变量的类型和变量的分配关系相关。
typeOfVariable(<String>)
  • 仅 Java,返回变量的类型,与变量类型查询相关。
typeParameterOf(VAR[,indexOrName])
  • 仅 Java,返回对象参数的类型,与变量类型中的参数类型相关。

三、文本处理相关

camelCase(<String>)
  • 将字符串转换为驼峰命名法格式,是文本格式转换函数。
  • 解释:接受一个字符串作为参数,并将其转换为 camelCase(驼峰命名法)格式。例如,对于输入的"my - text - file""my text file""my_text_file",都会输出myTextFile。这种命名法在很多编程语言中常用于变量和函数的命名,有助于提高代码的可读性和遵循命名规范。
  • 补充:在转换过程中,可能需要处理一些特殊情况,如连续的大写字母(在某些驼峰命名法变体中可能有不同的处理方式)或者非字母数字字符的处理。
capitalize(<String>)
  • 大写字符串的首字母,属于文本格式化操作。
  • 解释:将输入字符串的首字母大写。比如输入"name",会返回Name。也可以与其他函数组合使用,如capitalize(camelCase("my awesome class"))得到MyAwesomeClass,这在根据用户输入或其他数据源生成符合语法规范的名称时很有用。
  • 补充:需要注意处理字符串为空字符串的情况,可能需要定义一个合理的返回值(如空字符串或抛出异常,根据具体需求)。
capitalizeAndUnderscore(<String>)
  • 将字符串所有字母大写并插入下划线,文本格式化相关。
  • 解释:把输入字符串的所有字母大写,并在各部分之间插入下划线。例如,对于"FooBar""foo bar""foo - bar",都会返回FOO_BAR。这种格式在一些常量定义或与特定格式要求(如数据库表名、环境变量名等)匹配时可能会用到。
  • 补充:同样要考虑特殊字符和空字符串的处理方式,以确保函数的健壮性。
decapitalize(<String>)
  • 将字符串首字母替换为小写,也是文本处理操作。
lowercaseAndDash(<String>)
  • 将字符串转换为小写并插入短划线,文本转换函数。
snakeCase(<String>)
  • 将字符串转换为蛇形命名法(snake_case)格式,文本格式转换。
spaceSeparated(<String>)
  • 返回以空格分隔的字符串,与文本分隔相关。
spacesToUnderscores(<String>)
  • 将字符串中的空格替换为下划线,文本字符替换操作。
underscoresToCamelCase(<String>)
  • 将下划线分隔的字符串转换为驼峰命名法,文本格式转换。
underscoresToSpaces(<String>)
  • 将字符串中的下划线转换为空格,文本字符转换。
firstWord(<String>)
  • 获取字符串的第一个单词,文本解析相关。
escapeString(<String>)
  • 转义字符串中的特殊字符,与处理特殊字符的文本操作相关。

四、注释相关

blockCommentEnd()
  • 返回块注释的结束字符,与代码注释结构相关。
  • 解释:针对特定语言,返回表示块注释结束的字符。以 Java 为例,块注释以/*开始,以*/结束,所以这个函数在 Java 文件中会返回*/。这有助于在编写模板代码时自动生成正确的注释结构,特别是在需要动态生成包含注释的代码片段时。
  • 补充:不同语言的块注释结束字符可能不同,如在 Python 中,块注释是通过"""(三引号)来表示开始和结束,所以这个函数如果要应用于 Python,就需要返回"""
blockCommentStart()
  • 返回块注释的开始字符,注释结构相关。
  • 解释:与 blockCommentEnd () 相对应,返回当前语言上下文中块注释开始的字符。如在 Java 中返回/*,用于在代码模板中准确生成块注释的起始部分。
  • 补充:在一些支持多种注释风格的语言中,这个函数需要根据语言的默认或选定的注释风格来返回正确的起始字符。
commentEnd()
  • 返回注释结束字符(行注释可能为空),与注释的结构相关。
  • 解释:返回在当前语言上下文中指示注释结束的字符。对于带有行注释的语言,如果没有特定的结束字符(行注释通常到行末结束),则返回值为空。这个函数有助于在代码模板中准确生成注释结构,特别是在处理不同类型注释(行注释和块注释)混合的情况时。
  • 补充:在一些支持多种注释风格的语言中,需要根据当前使用的注释风格准确返回结束字符或者空值。
commentStart()
  • 返回注释开始字符(行注释情况与 lineCommentStart () 相同),与注释结构相关。
  • 解释:返回在当前语言上下文中指示注释开始的字符。对于具有行注释的语言,返回值是行注释的开头,与 lineCommentStart () 相同。这对于自动生成注释代码非常有用,确保注释在不同语言中的正确格式。
  • 补充:与 commentEnd () 类似,在多种注释风格的语言中要准确判断和返回正确的起始字符。
lineCommentStart()
  • 返回行注释开始的字符,注释格式相关。

五、代码补全与类型相关

complete()
  • 在变量位置调用代码补全,与开发环境中的代码补全功能相关。
  • 解释:在变量的位置调用代码补全功能。这是一个与开发环境集成的功能,旨在帮助开发人员更快地完成代码编写。当编写代码时,在某个变量位置调用这个函数,开发环境会根据当前的代码上下文(如已导入的类、已声明的变量和函数等)提供可能的代码补全选项。
  • 补充:不同的开发环境可能有不同的代码补全算法和数据源。这个函数的实现可能依赖于开发环境对代码结构的解析能力以及代码索引的建立。
completeSmart()
  • 在变量位置调用智能类型完成,与智能代码补全和类型相关。
  • 解释:类似于 complete (),但在变量的位置调用智能类型完成。这意味着它不仅仅是简单的基于名称的代码补全,还会考虑变量的类型信息以及当前代码上下文的语义信息。例如,根据变量的类型推断出可能的方法调用或属性访问,并提供相应的补全选项。
  • 补充:智能类型完成需要更深入的代码分析能力,可能涉及到类型推断引擎、语法分析树的遍历等技术,以提供更准确和有用的补全建议。
expectedType()
  • 仅 Java,返回模板展开表达式的预期类型,与类型检查和代码编写的类型正确性相关。
castToLeftSideType()
  • 将右侧表达式强制转换为左侧表达式类型,与类型转换相关。
  • 解释:在表达式中,如果必要的话,将右侧表达式强制转换为左侧表达式的类型。在一些迭代相关的预定义模板中使用,用于处理原始类型和泛型类型的转换,以确保类型的兼容性。
  • 补充:这个函数的实现需要深入了解编程语言的类型系统,包括类型转换规则、泛型的处理方式以及可能的类型安全机制。在进行转换时,可能需要考虑运行时类型信息(RTTI)以及编译时的类型检查。
rightSideType()
  • 与 castToLeftSideType () 相对,使用右侧表达式类型声明左侧变量,与类型声明相关。

六、日期与时间相关

date([format])
  • 返回当前系统日期,可指定格式,与日期获取和格式化相关。
time([format])
  • 返回当前系统时间,可指定格式,与时间获取和格式化相关。

七、文件操作相关

fileName()
  • 返回当前文件的名称及其扩展名,与文件信息相关。
fileNameWithoutExtension()
  • 返回文件名称不带扩展名,文件信息相关。
filePath()
  • 返回文件的绝对路径,与文件路径相关。
fileRelativePath()
  • 返回相对于当前项目的文件路径,与项目内文件的相对路径相关。

八、数据库操作相关

dbColumns()
  • 返回表或视图的列列表,与数据库表结构相关,用于数据库操作模板。
dbObjectName()
  • 返回表或视图的名称,数据库操作相关。

九、其他杂项

clipboard()
  • 返回系统剪贴板内容,与外部数据获取相关。
  • 解释:返回系统剪贴板的内容。这可以用于在代码模板中方便地引用剪贴板中的数据,例如将剪贴板中的文本直接插入到代码中的某个位置,或者根据剪贴板内容进行一些动态的代码生成操作。
  • 补充:在使用这个函数时,需要考虑安全性和数据格式的兼容性。例如,剪贴板中的数据可能是多种格式(如纯文本、HTML 等),如果模板只期望纯文本,可能需要进行格式转换。
concat(<String>,...)
  • 连接多个字符串,字符串操作相关,但用途比较广泛,可用于多种情况的字符串构建。
  • 解释:接受多个字符串作为参数,并返回这些字符串串联后的结果。例如,可以用于将当前系统日期和用户名以空格分隔拼接在一起,如concat(date(), " ", user())。这在构建动态的字符串内容(如日志消息、用户提示等)时非常有用。
  • 补充:在处理大量字符串拼接时,需要考虑性能问题。一些编程语言可能会提供更高效的字符串拼接方式(如使用StringBuilder类在 Java 中),如果性能是关键因素,可能需要对这个函数的使用进行优化。
enum(<String>,...)
  • 返回建议在模板展开时完成的字符串列表,用于提供预定义选项的模板相关操作。
groovyScript(<String>, [arg,...])
  • 执行 Groovy 脚本,可用于一些需要脚本处理的特殊操作。
guessElementType(<Collection>)
  • 仅 Java,返回集合的元素类型,与集合类型处理相关。
iterableComponentType(<Iterable>)
  • 仅 Java,返回可迭代对象的类型,与可迭代对象的类型查询相关。
substringBefore(<String>, <Delimeter>)
  • 返回不超过指定分隔符的子字符串,字符串处理相关,可用于处理文件名称等场景。
subtypes(<String>)
  • 仅 Java,返回指定类型在当前范围内的子类型,与类型层次结构相关。
suggestIndexName()
  • 从常用变量中返回迭代索引变量的建议名称,与迭代操作相关。
user()
  • 返回当前用户名称,与系统环境相关的信息获取。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值