Skip to content
This repository was archived by the owner on Jan 20, 2023. It is now read-only.

Commit bc5c721

Browse files
committed
KParameterは初期化時点で確定しているため、無駄な状態を持たないように修正
1 parent 7b9031e commit bc5c721

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

src/main/kotlin/com/mapk/core/ArgumentBucket.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import java.util.Objects
44
import kotlin.reflect.KParameter
55

66
class ArgumentBucket internal constructor(
7-
private val keyArray: Array<KParameter?>,
7+
private val keyList: List<KParameter>,
88
internal val valueArray: Array<Any?>,
99
private val isRequireNonNull: List<Boolean>,
1010
private val initializationStatusManager: InitializationStatusManager
@@ -22,8 +22,7 @@ class ArgumentBucket internal constructor(
2222
override val size: Int get() = count
2323

2424
override fun containsKey(key: KParameter): Boolean {
25-
// NOTE: もしかしたらステータスを見た方が速いかも
26-
return keyArray[key.index] != null
25+
return initializationStatusManager.isInitialized(key.index)
2726
}
2827

2928
override fun containsValue(value: Any?): Boolean = valueArray.any { Objects.equals(value, it) }
@@ -36,9 +35,12 @@ class ArgumentBucket internal constructor(
3635
override fun isEmpty(): Boolean = count == 0
3736

3837
override val entries: Set<Map.Entry<KParameter, Any?>>
39-
get() = keyArray.mapNotNull { it?.let { Entry(it, valueArray[it.index]) } }.toSet()
38+
get() = keyList
39+
.filter { initializationStatusManager.isInitialized(it.index) }
40+
.map { Entry(it, valueArray[it.index]) }
41+
.toSet()
4042
override val keys: Set<KParameter>
41-
get() = keyArray.filterNotNull().toSet()
43+
get() = keyList.filter { initializationStatusManager.isInitialized(it.index) }.toSet()
4244
override val values: Collection<Any?>
4345
get() = valueArray.filterIndexed { i, _ -> initializationStatusManager.isInitialized(i) }
4446

@@ -53,7 +55,6 @@ class ArgumentBucket internal constructor(
5355

5456
count += 1
5557
initializationStatusManager.put(index)
56-
keyArray[index] = key
5758
valueArray[index] = value
5859

5960
return

0 commit comments

Comments
 (0)