{"id":134,"date":"2023-04-15T05:24:28","date_gmt":"2023-04-15T05:24:28","guid":{"rendered":"https:\/\/canessaalvamiguel.dev\/?p=134"},"modified":"2023-05-03T03:32:57","modified_gmt":"2023-05-03T03:32:57","slug":"scala-type-hierarchy","status":"publish","type":"post","link":"https:\/\/canessaalvamiguel.dev\/index.php\/2023\/04\/15\/scala-type-hierarchy\/","title":{"rendered":"Scala Type Hierarchy"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"339\" src=\"https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-1024x339.png\" alt=\"\" class=\"wp-image-138\" srcset=\"https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-1024x339.png 1024w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-300x99.png 300w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-768x254.png 768w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-24x8.png 24w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-36x12.png 36w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1-48x16.png 48w, https:\/\/canessaalvamiguel.dev\/wp-content\/uploads\/2023\/04\/unified-types-diagram-1.png 1464w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">UNIFIED TYPES<\/figcaption><\/figure>\n\n\n\n<p><code>Any <\/code>es el supertipo de todos los tipos, tambi\u00e9n llamado tipo superior. Define ciertos m\u00e9todos universales como <code>equals<\/code>, <code>hashCode <\/code>y <code>toString<\/code>. <code>Any <\/code>tiene dos subclases directas: <code>AnyVal <\/code>y <code>AnyRef<\/code>.<\/p>\n\n\n\n<p><code>AnyVal <\/code>representa tipos de valores. Hay nueve tipos de valores predefinidos y no aceptan valores <code>NULL<\/code>: <code>Double<\/code>, <code>Float<\/code>, <code>Long<\/code>, <code>Int<\/code>, <code>Short<\/code>, <code>Byte<\/code>, <code>Char<\/code>, <code>Unit <\/code>y <code>Boolean<\/code>. <code>Unit <\/code>es un tipo de valor que no contiene informaci\u00f3n significativa. Hay exactamente una instancia de <code>Unit <\/code>que puede declararse literalmente as\u00ed: <code>().<\/code> Todas las funciones deben devolver algo, por lo que a veces <code>Unit <\/code>es un tipo de devoluci\u00f3n \u00fatil.<\/p>\n\n\n\n<p><code>AnyRef <\/code>representa tipos de referencia. Todos los tipos sin valor se definen como tipos de referencia. Cada tipo definido por el usuario en Scala es un subtipo de <code>AnyRef<\/code>. Si Scala se usa en el contexto de un entorno de tiempo de ejecuci\u00f3n de Java, <code>AnyRef <\/code>corresponde a java.lang.Object.<\/p>\n\n\n\n<p>Aqu\u00ed hay un ejemplo que demuestra que las cadenas, los n\u00fameros enteros, los caracteres, los valores booleanos y las funciones son todos del tipo Any como cualquier otro objeto:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\nval list: List&#x5B;Any] = List(\n  &quot;a string&quot;,\n  732,  \/\/ an integer\n  'c',  \/\/ a character\n  true, \/\/ a boolean value\n  () =&gt; &quot;an anonymous function returning a string&quot;\n)\n\nlist.foreach(element =&gt; println(element))\n<\/pre><\/div>\n\n\n<p>Define una lista de valores de tipo <code>List[Any]<\/code>. La lista se inicializa con elementos de varios tipos, pero cada uno es una instancia de <code>scala.Any<\/code>, por lo que puede agregarlos a la lista.<\/p>\n\n\n\n<p>Aqu\u00ed est\u00e1 la salida del programa:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: scala; title: ; notranslate\" title=\"\">\na string\n732\nc\ntrue\n&lt;function&gt;\n<\/pre><\/div>\n\n\n<h2 class=\"wp-block-heading\">Nothing and Null<\/h2>\n\n\n\n<p><code>Nothing <\/code>es un subtipo de todos los tipos, tambi\u00e9n llamado tipo inferior. No hay ning\u00fan valor que tenga el tipo <code>Nothing<\/code>. Un uso com\u00fan es se\u00f1alar la no terminaci\u00f3n, como una excepci\u00f3n lanzada, la salida del programa o un bucle infinito (es decir, es el tipo de una expresi\u00f3n que no se eval\u00faa como un valor o un m\u00e9todo que no regresa normalmente).<\/p>\n\n\n\n<p><code>Null <\/code>es un subtipo de todos los tipos de referencia (es decir, cualquier subtipo de <code>AnyRef<\/code>). Tiene un \u00fanico valor identificado por la palabra clave literal <code>null<\/code>. <code>Null <\/code>se proporciona principalmente para la interoperabilidad con otros lenguajes JVM y casi nunca debe usarse en c\u00f3digo Scala. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Any es el supertipo de todos los tipos, tambi\u00e9n llamado tipo superior. Define ciertos m\u00e9todos universales como equals,<\/p>\n","protected":false},"author":1,"featured_media":62,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[8,27],"class_list":["post-134","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-scala","tag-scala","tag-type-hierarchy"],"_links":{"self":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/comments?post=134"}],"version-history":[{"count":4,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/134\/revisions"}],"predecessor-version":[{"id":167,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/posts\/134\/revisions\/167"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media\/62"}],"wp:attachment":[{"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/media?parent=134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/categories?post=134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/canessaalvamiguel.dev\/index.php\/wp-json\/wp\/v2\/tags?post=134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}