在我的Kotlin应用程序中,我处理了一些成员资格类型。例如:
interface MembershipType {
fun getExcessOptions(): List
}
派生类型为GOLD
,SILVER
,BRONZE
,PLATNIUM
所有4种类型都有多余选项的列表。例如:
enum class MembershipType(val name: String) : IValueOptions {
SILVER("silver") {
override fun getExcessOptions() = listOf(300,200,100)
}, //for GOLD, BRONZE, PLATNIUM etc
对于GOLD
和SILVER
类型,可以将它们选择为Bundle
,因此它们必须具有可供选择的预定义valueOptions
列表。
对于BRONZE
,PLATNIUM
,它们只能是Named
,因此用户输入自己的值,他们可以选择。
基本上我想代表以下内容:
MemeberShip Type || Options || Value Options
GOLD || Bundle || 100, 200, 3000
SILVER || Bundle and Named || 4000, 5000
PLATINUM || Named
BRONZE || Named
data class Bundle (
val excess: Int
val value: Int
)
data class Named (
val excess: Int
val value: Int
)
data class Selection(val bundle : Bundle?, val items : List<Named>)
我该如何用Kotlin中的类和继承来表示这一点,或者就枚举而言,这两种类型在它们具有预定义的valueOptions
属性的意义上是唯一的?
答案 0 :(得分:0)
也许这可以为您提供一个起点
import pymysql
#import myconnutils
import datetime
import xlrd
import re
import os
import csv
#open csv file
with open('DBstatus.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['Host Name'], row["OS Type"], row['Host Description'])
#create database connection
databaseConnection = pymysql.connect(host='localhost', user='xxx', password='xxx', db='mydb', cursorclass= pymysql.cursors.DictCursor)
try:
cursorObject = databaseConnection.cursor()
# parms = (row['Host Name'], row["OS Type"], row['Host Description'])
# resultArgs = cursor.callproc('update_servers', inOutParams)
cursorObject.execute("call update_servers")
for result in cursorObject.fetchall():
print(result)
except Exception as e:
print("exception occured: {}".format (e))
finally:
databaseConnection.close()
密封类就像类和枚举组合在一起, 您不能再从外部扩展密封类了,每个对象可以扩展不同的接口
有关该信息的更多信息,请参见文档:https://kotlinlang.org/docs/reference/sealed-classes.html