Enums 是否可以在kotlin中使用枚举序号而不显式调用序号?
在C中,枚举都是数字的,您可以仅通过名称引用值 例如:Enums 是否可以在kotlin中使用枚举序号而不显式调用序号?,enums,kotlin,Enums,Kotlin,在C中,枚举都是数字的,您可以仅通过名称引用值 例如: #include <stdio.h> enum week { sunday, monday, tuesday, wednesday, thursday, friday, saturday }; int main() { enum week today; today = wednesday; printf("Day %d",today+1); return 0; } 要访问元素,我必须使用ve
#include <stdio.h>
enum week { sunday, monday, tuesday, wednesday, thursday, friday, saturday };
int main()
{
enum week today;
today = wednesday;
printf("Day %d",today+1);
return 0;
}
要访问元素,我必须使用verboseWeek.monday.ordinal
重写运算符
演示代码:
enum class WeekDay {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY;
companion object: Iterable<WeekDay> {
override fun iterator() = values().iterator()
}
operator fun unaryPlus() = ordinal
operator fun not() = ordinal
}
fun main(args: Array<String>) {
for (day in WeekDay) {
println("$day ${!day} ${+day}")
}
}
这说明了如何使用一元运算符来获取序数,我包括了两个示例:
- 一元加号
- 这将覆盖+运算符,我将其用作
+day
- 这将覆盖+运算符,我将其用作
- 不是
- 这就覆盖了!运算符,我将其用作
!日期
- 这就覆盖了!运算符,我将其用作
enum class Week { sunday, monday, tuesday, wednesday, thursday, friday, saturday }
- 使用代码
- 扩展函数(枚举成员)
- 目标方法(序数)
- 扩展函数(枚举成员)
enum class Weekday { MONDAY, TUESDAY;
operator fun invoke(): Int {
return ordinal
}
}
fun main(args: Array<String>) {
print("${Weekday.TUESDAY() + 1}")
}
enum类工作日{周一、周二;
运算符fun invoke():Int{
返回序号
}
}
趣味主线(args:Array){
打印(${Weekday.周二()+1}”)
}
结果:2
AFM它更漂亮 你只是用常数来表示数字吗?我唯一能想到的是,你可以用
+Week.sunday
,但我不确定你是不是这样想的want@jrtapsell是的,只适用于数字,就像在C中一样。数字是从0到N。@user5507535你想用它做什么,可能有更好的方法来实现你想做的事情
enum class Weekday { MONDAY, TUESDAY;
operator fun invoke(): Int {
return ordinal
}
}
fun main(args: Array<String>) {
print("${Weekday.TUESDAY() + 1}")
}