{"id":8484,"date":"2021-04-28T11:02:25","date_gmt":"2021-04-28T11:02:25","guid":{"rendered":"https:\/\/prwatech.in\/blog\/?p=8484"},"modified":"2024-04-13T09:45:55","modified_gmt":"2024-04-13T09:45:55","slug":"scala-extractors","status":"publish","type":"post","link":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/","title":{"rendered":"Scala &#8211; Extractors"},"content":{"rendered":"\r\n<h2><span data-sheets-root=\"1\" data-sheets-value=\"{&quot;1&quot;:2,&quot;2&quot;:&quot;An Introduction to Scala Extractor Objects&quot;}\" data-sheets-userformat=\"{&quot;2&quot;:6145,&quot;3&quot;:{&quot;1&quot;:0,&quot;3&quot;:1},&quot;14&quot;:{&quot;1&quot;:3,&quot;3&quot;:1},&quot;15&quot;:&quot;Arial&quot;}\">An Introduction to Scala Extractor Objects<\/span><\/h2>\r\n<p>&nbsp;<\/p>\r\n<p>In <strong><a href=\"https:\/\/prwatech.in\/blog\/scala\/scala-a-quick-overview\/\">Scala<\/a> Extractor <\/strong>is characterized as an <a href=\"http:\/\/scala-lang.org\">item<\/a> which has a technique named <strong>unapply<\/strong> as one of its part. This technique extracts an object and returns back the characteristics. \u00a0The <strong>unapply <\/strong>technique reverses the development procedure of the <strong>apply <\/strong>method.<\/p>\r\n<p>Scala extractor objects provide a mechanism for deconstructing objects in pattern matching contexts. An extractor object defines an <code>unapply<\/code> method that extracts components from an object, enabling pattern matching to be used with custom data types. The <code>unapply<\/code> method takes an object and returns an optional tuple of extracted values, allowing complex objects to be decomposed into simpler components.<\/p>\r\n<p>By defining custom extractor objects, developers can extend pattern matching capabilities to user-defined classes and enable sophisticated matching logic.<\/p>\r\n<div class=\"flex-1 overflow-hidden\">\r\n<div class=\"react-scroll-to-bottom--css-kloqy-79elbk h-full\">\r\n<div class=\"react-scroll-to-bottom--css-kloqy-1n7m0yu\">\r\n<div class=\"flex flex-col text-sm pb-9\">\r\n<div class=\"w-full text-token-text-primary\" dir=\"auto\" data-testid=\"conversation-turn-166\">\r\n<div class=\"px-4 py-2 justify-center text-base md:gap-6 m-auto\">\r\n<div class=\"flex flex-1 text-base mx-auto gap-3 juice:gap-4 juice:md:gap-6 md:px-5 lg:px-1 xl:px-5 md:max-w-3xl lg:max-w-[40rem] xl:max-w-[48rem] group final-completion\">\r\n<div class=\"relative flex w-full flex-col agent-turn\">\r\n<div class=\"flex-col gap-1 md:gap-3\">\r\n<div class=\"flex flex-grow flex-col max-w-full\">\r\n<div class=\"min-h-[20px] text-message flex flex-col items-start gap-3 whitespace-pre-wrap break-words [.text-message+&amp;]:mt-5 overflow-x-auto\" dir=\"auto\" data-message-author-role=\"assistant\" data-message-id=\"4d243655-8090-49bb-8c7b-9990a3fc12ac\">\r\n<div class=\"markdown prose w-full break-words dark:prose-invert light\">\r\n<p>Understanding and leveraging extractor objects is essential for mastering Scala&#8217;s pattern matching capabilities and writing elegant, and composable code.<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<h2><strong>use case 1:<\/strong><\/h2>\r\n\r\n\r\n\r\n<p>scala&gt; def apply(fname:String,lname:String)={<\/p>\r\n\r\n\r\n\r\n<p>\u00a0\u00a0\u00a0\u00a0 | fname+&#8221; &#8220;+lname<\/p>\r\n\r\n\r\n\r\n<p>\u00a0\u00a0\u00a0\u00a0 | }<\/p>\r\n\r\n\r\n\r\n<p>scala&gt; def unapply(str:String):Option[(String,String)]={<\/p>\r\n\r\n\r\n\r\n<p>\u00a0 \u00a0 \u00a0val parts=str split &#8221; &#8220;<\/p>\r\n\r\n\r\n\r\n<p>\u00a0 \u00a0 \u00a0if(parts.length==2){<\/p>\r\n\r\n\r\n\r\n<p>\u00a0 \u00a0 \u00a0Some(parts(0),parts(1))<\/p>\r\n\r\n\r\n\r\n<p>\u00a0 \u00a0 \u00a0}else{<\/p>\r\n\r\n\r\n\r\n<p>\u00a0\u00a0\u00a0\u00a0 | None<\/p>\r\n\r\n\r\n\r\n<p>\u00a0 \u00a0 \u00a0}<\/p>\r\n\r\n\r\n\r\n<p>\u00a0\u00a0\u00a0\u00a0 | }<\/p>\r\n\r\n\r\n\r\n<p>scala&gt; apply(&#8220;Mark&#8221;,&#8221;Zuckerberg&#8221;)<\/p>\r\n\r\n\r\n\r\n<p>2scala&gt; unapply(&#8220;Mark Zuckerberg&#8221;)<\/p>\r\n\r\n\r\n\r\n<p>scala&gt; unapply(&#8220;MarkZuckerberg&#8221;)<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"531\" height=\"386\" class=\"wp-image-8485\" src=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png\" alt=\"\" srcset=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png 531w, https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81-300x218.png 300w\" sizes=\"auto, (max-width: 531px) 100vw, 531px\" \/><\/figure>\r\n\r\n\r\n\r\n<p><strong>use case 2:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>     \/\/ Creating object\r\n     object prwatech {\r\n     \/\/ Main method\r\n     def main(args: Array[String])\r\n    {\r\n    \/\/ Assigning value to the\r\n    \/\/ object\r\n    val x = prwatech(50)\r\n\r\n    \/\/ Displays output of the\r\n    \/\/ Apply method\r\n    println(x)\r\n\r\n    \/\/ Applying pattern matching \r\n    x match\r\n    {\r\n\r\n        \/\/ unapply method is called\r\n        case prwatech(y) =&gt; println(\"The value is: \"+y)\r\n        case _ =&gt; println(\"Can't be evaluated\")\r\n\r\n    }\r\n}\r\n\r\n\/\/ Defining apply method\r\ndef apply(x: Double) = x \/ 5\r\n\r\n\/\/ Defining unapply method\r\ndef unapply(z: Double): Option[Double] =\r\n\r\n    if (z % 5 == 0) \r\n    {\r\n        Some(z\/5) \r\n    }\r\n\r\n    else None\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p><strong>output:<\/strong><\/p>\r\n\r\n\r\n\r\n<p>10.0<br \/>The value is: 2.0<\/p>\r\n\r\n\r\n\r\n<p><strong>use case 3:<\/strong><\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>\/\/ Scala program of extractors\r\n to return a Boolean type\r\n\r\n\/\/ Main method\r\n\/\/ Creating object\r\nobject PRWATECH\r\n{\r\ndef main(args: Array[String]) \r\n{\r\n\r\n    \/\/ Defining unapply method\r\n    def unapply(x:Int): Boolean = {\r\n\r\n        if (x % 5 == 0)\r\n        {\r\n            true\r\n        }\r\n        else\r\n                false\r\n    }\r\n\r\n    \/\/ Displays output in Boolean type\r\n    println (\"Unapply method returns : \" + unapply(16))\r\n    println (\"Unapply method returns : \" + unapply(35))\r\n\r\n}\r\n}<\/code><\/pre>\r\n\r\n\r\n\r\n<p><strong>output:<\/strong><\/p>\r\n\r\n\r\n\r\n<p>Unapply method returns : false<br \/>Unapply method returns : true<\/p>\r\n<p>&nbsp;<\/p>\r\n<p>An Introduction to Scala Extractor Objects<\/p>\r\n","protected":false},"excerpt":{"rendered":"<p>An Introduction to Scala Extractor Objects &nbsp; In Scala Extractor is characterized as an item which has a technique named unapply as one of its part. This technique extracts an object and returns back the characteristics. \u00a0The unapply technique reverses the development procedure of the apply method. Scala extractor objects provide a mechanism for deconstructing [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[565,1698],"tags":[1212,1208,1215,1210,1214,1209,1211,1217,1216,1213],"class_list":["post-8484","post","type-post","status-publish","format-standard","hentry","category-scala","category-scala-modules-scala","tag-definition-of-extractors-in-scala","tag-extractors","tag-extractors-examples","tag-extractors-in-scala","tag-extractors-use-cases","tag-scala-extractors","tag-scala-extractors-examples","tag-scala-extractors-method","tag-unapply-method-extractors","tag-what-is-extractors"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>An Introduction to Scala Extractor Objects - Prwatech<\/title>\n<meta name=\"description\" content=\"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.\" \/>\n<meta name=\"robots\" content=\"noindex, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An Introduction to Scala Extractor Objects - Prwatech\" \/>\n<meta property=\"og:description\" content=\"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/\" \/>\n<meta property=\"og:site_name\" content=\"Prwatech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prwatech.in\/\" \/>\n<meta property=\"article:published_time\" content=\"2021-04-28T11:02:25+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-04-13T09:45:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png\" \/>\n<meta name=\"author\" content=\"Prwatech\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:site\" content=\"@Eduprwatech\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prwatech\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/\",\"url\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/\",\"name\":\"An Introduction to Scala Extractor Objects - Prwatech\",\"isPartOf\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png\",\"datePublished\":\"2021-04-28T11:02:25+00:00\",\"dateModified\":\"2024-04-13T09:45:55+00:00\",\"author\":{\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\"},\"description\":\"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.\",\"breadcrumb\":{\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage\",\"url\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png\",\"contentUrl\":\"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png\",\"width\":531,\"height\":386},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/prwatech.in\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scala &#8211; Extractors\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/prwatech.in\/blog\/#website\",\"url\":\"https:\/\/prwatech.in\/blog\/\",\"name\":\"Prwatech\",\"description\":\"Share Ideas, Start Something Good.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/prwatech.in\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3\",\"name\":\"Prwatech\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g\",\"caption\":\"Prwatech\"},\"url\":\"https:\/\/prwatech.in\/blog\/author\/prwatech123\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An Introduction to Scala Extractor Objects - Prwatech","description":"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.","robots":{"index":"noindex","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"og_locale":"en_US","og_type":"article","og_title":"An Introduction to Scala Extractor Objects - Prwatech","og_description":"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.","og_url":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/","og_site_name":"Prwatech","article_publisher":"https:\/\/www.facebook.com\/prwatech.in\/","article_published_time":"2021-04-28T11:02:25+00:00","article_modified_time":"2024-04-13T09:45:55+00:00","og_image":[{"url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png","type":"","width":"","height":""}],"author":"Prwatech","twitter_card":"summary_large_image","twitter_creator":"@Eduprwatech","twitter_site":"@Eduprwatech","twitter_misc":{"Written by":"Prwatech","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/","url":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/","name":"An Introduction to Scala Extractor Objects - Prwatech","isPartOf":{"@id":"https:\/\/prwatech.in\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage"},"image":{"@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage"},"thumbnailUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png","datePublished":"2021-04-28T11:02:25+00:00","dateModified":"2024-04-13T09:45:55+00:00","author":{"@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3"},"description":"Master An Introduction to Scala Extractor Objects - Dive deep with our expert instructors and comprehensive curriculum.","breadcrumb":{"@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#primaryimage","url":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png","contentUrl":"https:\/\/prwatech.in\/blog\/wp-content\/uploads\/2021\/04\/image-81.png","width":531,"height":386},{"@type":"BreadcrumbList","@id":"https:\/\/prwatech.in\/blog\/scala\/scala-modules-scala\/scala-extractors\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/prwatech.in\/blog\/"},{"@type":"ListItem","position":2,"name":"Scala &#8211; Extractors"}]},{"@type":"WebSite","@id":"https:\/\/prwatech.in\/blog\/#website","url":"https:\/\/prwatech.in\/blog\/","name":"Prwatech","description":"Share Ideas, Start Something Good.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/prwatech.in\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/db90baff7744090b2288bbc98fea87f3","name":"Prwatech","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prwatech.in\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c00bafc1b04045f31eda917de39891456c44fa47c092b9bb6be0f860a3a30a2f?s=96&d=mm&r=g","caption":"Prwatech"},"url":"https:\/\/prwatech.in\/blog\/author\/prwatech123\/"}]}},"_links":{"self":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8484","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/comments?post=8484"}],"version-history":[{"count":8,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8484\/revisions"}],"predecessor-version":[{"id":11443,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/posts\/8484\/revisions\/11443"}],"wp:attachment":[{"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/media?parent=8484"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/categories?post=8484"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prwatech.in\/blog\/wp-json\/wp\/v2\/tags?post=8484"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}