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

Commit c88da14

Browse files
committed
基本的な呼び出し方まで追記
1 parent 34b42d9 commit c88da14

File tree

1 file changed

+41
-0
lines changed

1 file changed

+41
-0
lines changed

README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,44 @@ val fastKFunction = FastKFunction(sample::instanceFun, sample)
5959

6060
Depending on how you get the `KFunction`, the `instance parameter` may be required.
6161
Even if the `instance parameter` is not required, passing an `instance parameter` will make the call faster.
62+
63+
### How to call.
64+
`FastKFunction` supports two major types of calls.
65+
66+
#### Call by vararg or Collection.
67+
Calling with `vararg` or `Collection` is faster if you don't need to use the default arguments and
68+
can get them in the order in which they are defined.
69+
70+
```kotlin
71+
val fastKFunction: FastKFunction<Sample> = FastKFunction(function)
72+
73+
// call by vararg
74+
val result: Sample = fastKFunction.call(1, 2, 3, 4, 5)
75+
76+
// call by Collection
77+
val result: Sample = fastKFunction.callByCollection(listOf(1, 2, 3, 4, 5))
78+
```
79+
80+
#### Call by ArgumentBucket.
81+
If the default argument is expected to be used, a call using `ArgumentBucket` is available.
82+
83+
`ArgumentBucket` has interfaces like `MutableMap<KParameter, Any?>`, which can be used, for example, as follows.
84+
85+
```kotlin
86+
data class Sample(
87+
val arg1: Int,
88+
val arg2: Int = 0,
89+
val arg3: String? = null
90+
)
91+
92+
private val fastKFunction: FastKFunction<Sample> = FastKFunction(::Sample)
93+
94+
fun map(src: Map<String, Any?>): Sample {
95+
return fastKFunction.generateBucket()
96+
.apply {
97+
fastKFunction.valueParameters.forEach {
98+
if (src.containsKey(it.name!!)) this[it] = src.getValue(it.name!!)
99+
}
100+
}.let { fastKFunction.callBy(it) }
101+
}
102+
```

0 commit comments

Comments
 (0)