A:代码A清楚,_myid
中的whereSimple("$_myid = ? ",_id.toString())
表示val _myid:String=DBRecordTable._ID
B:我混淆代码B,_id
中的whereSimple("$_id = ? ",_id.toString())
是指val _id:String=DBRecordTable._ID
吗?还是fun getRecordByID(_id:Long)
?
顺便说一句,代码C错误,无法编译!
代码A
class DBRecordHandler(val mDBRecordHelper: DBRecordHelper =DBRecordHelper.instance,
val tableName:String =DBRecordTable.TableNAME,
val _myid:String=DBRecordTable._ID
) {
fun getRecordByID(_id:Long):MDBRecord? = mDBRecordHelper.use{
select(tableName)
.whereSimple("$_myid = ? ",_id.toString())
.parseOpt{MDBRecord(HashMap(it)) }
}
}
代码B
class DBRecordHandler(val mDBRecordHelper: DBRecordHelper =DBRecordHelper.instance,
val tableName:String =DBRecordTable.TableNAME,
val _id:String=DBRecordTable._ID
) {
fun getRecordByID(_id:Long):MDBRecord? = mDBRecordHelper.use{
select(tableName)
.whereSimple("$_id = ? ",_id.toString())
.parseOpt{MDBRecord(HashMap(it)) }
}
}
代码C
class DBRecordHandler(val mDBRecordHelper: DBRecordHelper =DBRecordHelper.instance,
val tableName:String =DBRecordTable.TableNAME,
val _id:String=DBRecordTable._ID
) {
fun getRecordByID(_id:Long):MDBRecord? = mDBRecordHelper.use{
select(tableName)
.whereSimple("${this._id}= ? ",_id.toString())
.parseOpt{MDBRecord(HashMap(it)) }
}
}
答案 0 :(得分:1)
变量的“更本地化”版本是将要使用的版本,即,在函数中声明为参数的版本,而不是声明为类的构造函数参数的版本。这称为阴影。
请注意,如果您按ctrl键并单击代码中的变量,IDE将带您进入其声明,因此您可以在引用该代码的任何位置查看将要使用哪个实例。 / p>