Fonctions de haut niveau Kotlin vs fonction objet


Vahan

J'ai une fonction statique qui est limitée à un certain contexte, par exemple uniquement pour les documents. Il existe 2 façons de le définir comme fonction ou fonction de niveau supérieur dans un objet.

1.

package com.armsoft.mtrade.data.pref

import com.armsoft.mtrade.App
import com.armsoft.mtrade.domain.model.DocSaveType

object DocPrefManager {
    private const val DOC_PREF = "DOC_PREF"

    private const val KEY_ORDER_SAVE_TYPE = "KEY_ORDER_SAVE_TYPE"

    @JvmStatic
    fun setOrderSaveType(orderSaveType: DocSaveType) {
        val context = App.getContext()
        val sharedPreferences = context.getSharedPreferences(DOC_PREF, 0)
        val editor = sharedPreferences.edit()
        editor.putString(KEY_ORDER_SAVE_TYPE, orderSaveType.getCode())
        editor.commit()
    }
}

2.

package com.armsoft.mtrade.data.pref

import com.armsoft.mtrade.App
import com.armsoft.mtrade.domain.model.DocSaveType

fun setOrderSaveType(orderSaveType: DocSaveType) {
    val context = App.getContext()
    val sharedPreferences = context.getSharedPreferences(DocPrefManager.DOC_PREF, 0)
    val editor = sharedPreferences.edit()
    editor.putString(DocPrefManager.KEY_ORDER_SAVE_TYPE, orderSaveType.getCode())
    editor.commit()
}

L'avantage de la fonction de niveau supérieur est qu'elle n'est pas enveloppée dans un objet et l'inconvénient d'être accessible de partout sans préfixe de nom de classe. Existe-t-il des avantages ou des inconvénients ou des meilleures pratiques pour de tels cas?

Articles connexes


Contrat Kotlin avec des fonctions de haut niveau

Karol Kulbaka J'ai un problème avec la nullité de Kotlin et je me demande si je suis capable de le résoudre avec des contrats. Pour une telle Javainterface: interface Action<T>{ void execute(T param); }il existe deux extensions: fun <T, R> Action<T>.map(mapper

Fonction de haut niveau

Caio Guedes Au cours de la programmation fonctionnelle avec Scala, j'ai vu deux formes de déclaration d'un fichier def. Mais je ne connais pas les différences entre eux, et le nom donné pour cela. Comment puis-je obtenir plus d'informations à ce sujet? Déclara

Fonctions de haut niveau Haskell

mac10688 J'ai un fichier Haskell ouvert sur le côté gauche de mon écran et ghci sur l'autre moitié. Je veux ajouter des fonctions au fichier, les enregistrer et les expérimenter dans ghci. Le problème est que je ne suis pas totalement sûr de savoir comment déc

Comment appeler une fonction kotlin de haut niveau en java?

Chriss Supposons qu'une fonction kotlin est définie en dehors d'une classe en tant que fonction de niveau supérieur. Util.kt: class Util { fun bar() } fun foo(){} Comment puis-je appeler une méthode foo()en Java? Aasmund Eldhuset foosera compilé en une fon

Comment simuler une fonction de haut niveau Kotlin?

Niel de Wet: Mockk permet de se moquer des fonctions statiques, mais comment se moquer d'une fonction de niveau supérieur Kotlin? Par exemple, si j'ai un fichier Kotlin appelé HelloWorld.kt, comment puis-je me moquer de la sayHello()fonction? HelloWorld.kt fun

fonction de niveau supérieur vs Any. en kotlin

Rasoul Miri Laquelle de la fonction et de l'extension de niveau supérieur Est-il préférable d'avoir une fonction partout dans le projet ? Niveau supérieur fonctio n package com.test fun A(){ } Rallonge Quelconque package com.test fun Any.A(){ } mince La

Attendre une déclaration de haut niveau avec Kotlin 1.3

Nicolas Zozol J'ai un problème avec du code Kotlin. Le compilateur 1.3 donne trois erreurs : Attendre une déclaration de haut niveau Attendre une déclaration de membre Attendre une déclaration de haut niveau Mais l'éditeur intellij ne le met pas en évidence. E

Fonction sass de haut niveau pour l'importation personnalisée

Sergey Troinin J'utilise SASS et je dois maintenant importer de nombreux partiels de différents endroits. Par exemple, je dois parfois écrire quelque chose comme ceci: @import '../../../global/static/src/sass/example'; Existe-t-il un moyen d'éviter la duplica