我希望能够使用[x,y]表示法访问对象的成员字段之一,例如board.tiles [0,0] =42。这可能吗?
这是我要做什么的想法。...
无法编译
class Tile(var value: Int = 0){
}
class Board() {
var _tiles = Array<Tile>(100) {Tile()} //Represents a 10x10 playing board
var tiles
get(x: Int, y: Int) {return _tiles[y * 10 + x]}
set(x:Int, y: Int, value: Tile) {_tiles[y * 10 + x] = value}
}
fun main(args: Array<String>) {
val board = Board()
board.tiles[0,0].value = 42
}
答案 0 :(得分:1)
要获取该语法,您需要使indexing operators重载,例如:
WP_Query()
这将为您提供以下语法:
class Board() {
private var _tiles = Array<Tile>(100) { Tile() } //Represents a 10x10 playing board
operator fun get(x: Int, y: Int): Tile {
return _tiles[y * 10 + x]
}
operator fun set(x: Int, y: Int, value: Tile) {
_tiles[y * 10 + x] = value
}
}
如果您特别想做val board = Board()
board[0, 0].value = 42
println(board[0, 0])
,则必须在board.tiles[0, 0]
内嵌套这些运算符重载的属性。
答案 1 :(得分:1)
Kotlin定义了一些约定,可让您按照建议进行操作。看看Indexed access operator
s。
Board
答案 2 :(得分:0)
实际上,您可以拥有这样的东西:
<div>
<span class="cercle-logo"><i class="fa fa-chart-pie fa-2x"></i></span>
</div>