File tree Expand file tree Collapse file tree 5 files changed +73
-0
lines changed
main/kotlin/com/javiersc/kotlin/stdlib
test/kotlin/com/javiersc/kotlin/stdlib Expand file tree Collapse file tree 5 files changed +73
-0
lines changed Original file line number Diff line number Diff line change 4
4
5
5
### Added
6
6
7
+ - ` T?.ifNotNull(block: () -> Unit): T? `
8
+ - ` T?.ifNull(block: () -> Unit): T? `
7
9
- ` Graph ` data structure
8
10
9
11
### Changed
Original file line number Diff line number Diff line change @@ -191,6 +191,11 @@ public final class com/javiersc/kotlin/stdlib/StringsTransformKt {
191
191
public static final fun transformstring (Ljava/lang/String;)Ljava/lang/String;
192
192
}
193
193
194
+ public final class com/javiersc/kotlin/stdlib/TKt {
195
+ public static final fun ifNotNull (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
196
+ public static final fun ifNull (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
197
+ }
198
+
194
199
public abstract interface class com/javiersc/kotlin/stdlib/graph/Graph : java/util/Map, kotlin/jvm/internal/markers/KMappedMarker {
195
200
public abstract fun asString ()Ljava/lang/String;
196
201
public abstract fun contains (Ljava/lang/Object;)Z
Original file line number Diff line number Diff line change @@ -197,6 +197,11 @@ public final class com/javiersc/kotlin/stdlib/StringsTransformKt {
197
197
public static final fun transformstring (Ljava/lang/String;)Ljava/lang/String;
198
198
}
199
199
200
+ public final class com/javiersc/kotlin/stdlib/TKt {
201
+ public static final fun ifNotNull (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
202
+ public static final fun ifNull (Ljava/lang/Object;Lkotlin/jvm/functions/Function0;)Ljava/lang/Object;
203
+ }
204
+
200
205
public abstract interface class com/javiersc/kotlin/stdlib/graph/Graph : java/util/Map, kotlin/jvm/internal/markers/KMappedMarker {
201
206
public abstract fun asString ()Ljava/lang/String;
202
207
public abstract fun contains (Ljava/lang/Object;)Z
Original file line number Diff line number Diff line change
1
+ package com.javiersc.kotlin.stdlib
2
+
3
+ public inline fun <T > T?.ifNotNull (block : () -> Unit ): T ? {
4
+ if (this != null ) block()
5
+ return this
6
+ }
7
+
8
+ public inline fun <T > T?.ifNull (block : () -> Unit ): T ? {
9
+ if (this == null ) block()
10
+ return this
11
+ }
Original file line number Diff line number Diff line change
1
+ package com.javiersc.kotlin.stdlib
2
+
3
+ import kotlin.test.Test
4
+ import kotlin.test.assertFalse
5
+ import kotlin.test.assertTrue
6
+
7
+ @Suppress(" RedundantNullableReturnType" )
8
+ class TTest {
9
+
10
+ private val a: String? = " a"
11
+ private val b: String? = null
12
+ private val one: Int? = 1
13
+ private val two: Int? = null
14
+
15
+ @Test
16
+ fun ifNotNull () {
17
+ var isA = false
18
+ var isB = false
19
+ var isOne = false
20
+ var isTwo = false
21
+
22
+ a.ifNotNull { isA = true }
23
+ b.ifNotNull { isB = true }
24
+ one.ifNotNull { isOne = true }
25
+ two.ifNotNull { isTwo = true }
26
+
27
+ assertTrue { isA }
28
+ assertFalse { isB }
29
+ assertTrue { isOne }
30
+ assertFalse { isTwo }
31
+ }
32
+
33
+ @Test
34
+ fun ifNull () {
35
+ var isA = false
36
+ var isB = false
37
+ var isOne = false
38
+ var isTwo = false
39
+
40
+ a.ifNull { isA = true }
41
+ b.ifNull { isB = true }
42
+ one.ifNull { isOne = true }
43
+ two.ifNull { isTwo = true }
44
+
45
+ assertFalse { isA }
46
+ assertTrue { isB }
47
+ assertFalse { isOne }
48
+ assertTrue { isTwo }
49
+ }
50
+ }
You can’t perform that action at this time.
0 commit comments