Skip to content

Instantly share code, notes, and snippets.

View GabrielBrasileiro's full-sized avatar

Gabriel Brasileiro GabrielBrasileiro

View GitHub Profile
inline fun executeOperation(crossinline operationTwo: () -> Unit) {
operationOne {
operationTwo()
}
}
@PublishedAPI
internal fun operationOne(block: () -> Unit) {
block()
}
@GabrielBrasileiro
GabrielBrasileiro / ClientFlow.kt
Last active January 8, 2024 00:12
Functional Replacement Pattern (En)
// Control interface
interface ClientFlow {
fun executeFlow()
}
@GabrielBrasileiro
GabrielBrasileiro / ClientFlow.kt
Last active October 18, 2023 23:58
Functional Replacement Pattern
// Interface de controle
interface ClientFlow {
fun executeFlow()
}
inline fun executarOperacao(crossinline operacaoDois: () -> Unit) {
operacaoUm {
operacaoDois()
}
}
@PublishedApi
internal fun operacaoUm(bloco: () -> Unit) {
bloco()
}
@GabrielBrasileiro
GabrielBrasileiro / ReifiedBytecode.java
Last active June 23, 2021 03:36
ReifiedBytecode.java
public static final void main() {
// Função de adquirir métodos
Method[] methods = String.class.getMethods();
// Validação da String na lista
if (element instanceof String) {
// Atribuições
}
/**
@GabrielBrasileiro
GabrielBrasileiro / Reified.kt
Last active June 19, 2021 05:41
Reified.kt
fun main() {
println(filtrarString<String>())
println(adquirirMetodos<String>())
}
inline fun <reified T : Any> adquirirMetodos(): List<String> {
return T::class.java.methods.map { it.toString() }
}
@GabrielBrasileiro
GabrielBrasileiro / Reified.kt
Last active June 19, 2021 05:45
Reified.kt
fun main() {
println(filtrarString(String::class.java))
println(adquirirMetodos(String::class.java))
}
fun <T : Any> adquirirMetodos(clazz: Class<T>): List<String> {
return clazz::class.java.methods.map { it.toString() }
}
fun <T : Any> filtrarString(clazz: Class<T>): T? {
@GabrielBrasileiro
GabrielBrasileiro / HighOrderFunctionCrossinline.kt
Last active June 21, 2021 20:07
HighOrderFunctionCrossinline.kt
fun main() {
val descricao = "Inline te dando poderes mágicos"
executarOperacao {
print(descricao)
return // Retorno não permitido
}
}
inline fun executarOperacao(crossinline operacaoDois: () -> Unit) {
operacaoUm {
@GabrielBrasileiro
GabrielBrasileiro / HighOrderFunctionNoinline.kt
Last active June 21, 2021 20:09
HighOrderFunctionNoinline.kt
fun main() {
val descricao = "Inline te dando poderes mágicos"
val descricaoEmEscopoPrincipal = "Inline no escopo principal"
executarOperacao({
print(descricao)
return // Retorno permitido
}, {
print(descricaoEmEscopoPrincipal)
return // Retorno não permitido
@GabrielBrasileiro
GabrielBrasileiro / HighOrderFunctionInline.java
Last active June 22, 2021 00:24
HighOrderFunctionInline.java
public static final void main() {
final String descricao = "Inline te dando poderes mágicos";
executarOperacao(new Function() {
@Override
public void invoke() {
System.out.print(descricao);
}
}
}