Voici les Similitudes et les Différences
Les similitudes
Avec et s'Applique à la fois accepter un objet tel qu'un récepteur de quelque manière que ce qu'ils sont passés.
Les différences
Avec les retours à la dernière ligne dans le lambda comme le résultat de l'expression.
Appliquer renvoie l'objet qui a été transmis en tant que récepteur comme le résultat de l'expression lambda.
Exemples
Avec
private val ORIENTATIONS = with(SparseIntArray()) {
append(Surface.ROTATION_0, 90)
append(Surface.ROTATION_90, 0)
append(Surface.ROTATION_180, 270)
append(Surface.ROTATION_270, 180)
}
ORIENTATIONS[0] // doesn't work
// Here, using with prevents me from accessing the items in the SparseArray because,
// the last line actually returns nothing
Appliquer
private val ORIENTATIONS = SparseIntArray().apply {
append(Surface.ROTATION_0, 90)
append(Surface.ROTATION_90, 0)
append(Surface.ROTATION_180, 270)
append(Surface.ROTATION_270, 180)
}
ORIENTATIONS[0] // Works
// Here, using apply, allows me to access the items in the SparseArray because,
// the SparseArray is returned as the result of the expression