What do underscores mean in anonymous functions?












0















I have the method below which I am trying to understand



  def method1[A](
messageCallback: String => A,
failureCallback: Throwable => Unit = (_: Throwable) => Unit
) = {}


What does the (_: Throwable) => Unit) mean?



I understand that it's the default function literal but I don't understand the underscore.










share|improve this question




















  • 2





    _ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

    – Luis Miguel Mejía Suárez
    Jan 2 at 17:42
















0















I have the method below which I am trying to understand



  def method1[A](
messageCallback: String => A,
failureCallback: Throwable => Unit = (_: Throwable) => Unit
) = {}


What does the (_: Throwable) => Unit) mean?



I understand that it's the default function literal but I don't understand the underscore.










share|improve this question




















  • 2





    _ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

    – Luis Miguel Mejía Suárez
    Jan 2 at 17:42














0












0








0








I have the method below which I am trying to understand



  def method1[A](
messageCallback: String => A,
failureCallback: Throwable => Unit = (_: Throwable) => Unit
) = {}


What does the (_: Throwable) => Unit) mean?



I understand that it's the default function literal but I don't understand the underscore.










share|improve this question
















I have the method below which I am trying to understand



  def method1[A](
messageCallback: String => A,
failureCallback: Throwable => Unit = (_: Throwable) => Unit
) = {}


What does the (_: Throwable) => Unit) mean?



I understand that it's the default function literal but I don't understand the underscore.







scala lambda functional-programming anonymous-function






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Jan 3 at 1:34









Andrey Tyukin

30.2k42351




30.2k42351










asked Jan 2 at 17:07









CrtCrt

2,39822636




2,39822636








  • 2





    _ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

    – Luis Miguel Mejía Suárez
    Jan 2 at 17:42














  • 2





    _ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

    – Luis Miguel Mejía Suárez
    Jan 2 at 17:42








2




2





_ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

– Luis Miguel Mejía Suárez
Jan 2 at 17:42





_ means anything. In this case in particular the idea is, given any parameter just ignore it. And the body of the function just returns Unit - in other words the default is an empty callback that does nothing rewarding of the value passed to the callback function.

– Luis Miguel Mejía Suárez
Jan 2 at 17:42












1 Answer
1






active

oldest

votes


















3














It's a default implementation of a function. It's so simple that its signature looks almost the same as implementation itself; its signature is Throwable => Unit, and it is implemented with the trivial body (_: Throwable) => Unit. It means "take some Throwable at input and just don't return anything".



It's the same as implementing it as (a: Throwable) => Unit, but then compiler would complain that a is unused.



Another alternative for the same thing is (a: Throwable) => ().






share|improve this answer


























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010388%2fwhat-do-underscores-mean-in-anonymous-functions%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    3














    It's a default implementation of a function. It's so simple that its signature looks almost the same as implementation itself; its signature is Throwable => Unit, and it is implemented with the trivial body (_: Throwable) => Unit. It means "take some Throwable at input and just don't return anything".



    It's the same as implementing it as (a: Throwable) => Unit, but then compiler would complain that a is unused.



    Another alternative for the same thing is (a: Throwable) => ().






    share|improve this answer






























      3














      It's a default implementation of a function. It's so simple that its signature looks almost the same as implementation itself; its signature is Throwable => Unit, and it is implemented with the trivial body (_: Throwable) => Unit. It means "take some Throwable at input and just don't return anything".



      It's the same as implementing it as (a: Throwable) => Unit, but then compiler would complain that a is unused.



      Another alternative for the same thing is (a: Throwable) => ().






      share|improve this answer




























        3












        3








        3







        It's a default implementation of a function. It's so simple that its signature looks almost the same as implementation itself; its signature is Throwable => Unit, and it is implemented with the trivial body (_: Throwable) => Unit. It means "take some Throwable at input and just don't return anything".



        It's the same as implementing it as (a: Throwable) => Unit, but then compiler would complain that a is unused.



        Another alternative for the same thing is (a: Throwable) => ().






        share|improve this answer















        It's a default implementation of a function. It's so simple that its signature looks almost the same as implementation itself; its signature is Throwable => Unit, and it is implemented with the trivial body (_: Throwable) => Unit. It means "take some Throwable at input and just don't return anything".



        It's the same as implementing it as (a: Throwable) => Unit, but then compiler would complain that a is unused.



        Another alternative for the same thing is (a: Throwable) => ().







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited Jan 2 at 17:56

























        answered Jan 2 at 17:42









        sloucslouc

        5,7542829




        5,7542829
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54010388%2fwhat-do-underscores-mean-in-anonymous-functions%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith

            Npm cannot find a required file even through it is in the searched directory