Pour les deux concepts orthogonaux signifie qu'ils peuvent être réalisé de manière indépendante à un degré quelconque dans toute manifestation donnée. Considérant la musique, par exemple, vous pouvez classer un morceau de musique comment harmonique et la rythmique c'est. Les deux concepts de "harmonique" et "rythmique" sont orthogonaux dans le sens qu'il y a des harmoniques et rythmiques des morceaux, disharmonic et arrythmic morceaux, mais aussi disharmonic et rythmique des morceaux ainsi que les harmoniques et arythmique morceaux.
Appliquée à la question de départ, ce qui signifie qu'il y a de purement fonctionnels, non-programmation orientée objet lanuages comme Haskell, purement orienté objet, "non fonctionnel" des langues comme Eiffel, mais aussi des langues qui ne sont ni tels que C et les langues qui sont à la fois tels que Scala.
Il suffit de parler, Scala étant orientée objet signifie que vous pouvez définir des structures de données ("classes" et "traits") qui encapsulent des données avec les méthodes permettant de manipuler ces données, en garantissant que les instances de ces structures ("objets") sont toujours dans un état (l'objet du contrat prévu dans sa classe).
D'autre part, la Scala étant un langage fonctionnel signifie qu'il favorise l'immuable sur mutable état et que les fonctions sont des objets de première classe, qui peut être utilisé comme tout autre objet comme des variables locales, des champs ou des paramètres à d'autres fonctions. En plus de cela, presque tous les instruction dans Scala a une valeur, qui vous encourage à utiliser un style de programmation fonctionnelle.
L'orthogonalité de la programmation orientée objet et la programmation fonctionnelle en Scala de plus signifie que vous en tant que programmeur est libre de choisir n'importe quelle combinaison de ces deux concepts que vous voyez l'ajustement pour votre but. Vous pouvez écrire vos programmes dans un but purement impératif de style, en utilisant mutable objets et non à l'aide de fonctions comme des objets, d'autre part, vous pouvez aussi écrire purement fonctionnelle des programmes en Scala de ne pas utiliser l'un de ses fonctionnalités orientées objet.
Scala vraiment ne vous oblige pas à utiliser un modèle ou l'autre. Il vous permet de choisir le meilleur des deux mondes pour résoudre votre problème.