Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Groovy Tip 32 方法的参数 一大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

                        Groovy Tip 32 方法的参数 一

 

 

Groovy语言在方法的输入参数方面做了很多有益的工作,这些工作有些能提高代码的阅读性,有些能提供编码的方便和敏捷。在前面的文字中,我们已经陆续的介绍过一些,如《Groovy探索之Map与DSL》。在这个系列中,我们再把一些前面没有提及的一一介绍过来。

首先,是关于调用方法时的括号的使用。

在Groovy语言的编码中,我们可能已经很熟练的使用下面的语句:

 

      println 'Hello,world'

 

我们都知道,上面的语句相当于下面的语句:

 

      println('Hello,world')

 

这就是说明,在Groovy语言中,我们可以省略调用方法时的那对括号,这样做的好处,第一是减少了我们输入括号的键盘敲击,提高了编码的快捷性;第二是提高了的代码的阅读性,这也是DSL的一个方面。比如下面的语句:

 

      def word = 'Are you ok?'

            

      println word

 

就比"println(word)"的阅读性好。

但是,值得注意的是,方法调用中的括号也不是可以随意省略的。有些时候,省略会带来编译错误如下面的换行语句:

 

      println()

 

就不能省略掉括号,写成如下的样子:

 

      println

 

除此之外,下面的语句也是不能正常编译的:

     

      def list = [1,2,3,4]

 

      def list2 = list.subList 0,1

 

但下面的语句却又是可以编译的:

     

      def list1 = list.subList(0,1)

     

      list.subList 0,1

 

 

总之,当你发现省略了方法调用中的括号时,出现编译错误,你就应该把括号加上

 

第二,Groovy语言中,关于方法参数的值的处理。

比如,我们有如下的一个方法

 

    def static add(i,j)

    {

       i+j

    }

 

现在的要求是,在这方法中,如果我们只输入参数"i",那么表示参数"j"为认值1。如果我们只输入参数"j",那么表示参数"i"为认值0。如果两个参数都不输入,那么表示参数"i"为认值0,参数"j"为认值1。

要达到上面的要求,在Java语言中,我们必须再写如下的三个方法

 

    def static add0(j)

    {

       add(0,j)  

    }

   

    def static add1(i)

    {

       add(i,1)  

    }

   

    def static add()

    {

       add(0,1)  

    }

 

这样,如果我们想使用参数"i"的认值,那么就调用方法"add0";如果想使用参数"j"的认值,那么就调用方法"add1";如果想调用两个认值,就调用最后一个方法

所以,在Java语言中,我们要达到上面的要求,我们必须写四个方法

 

在Groovy语言中,我们将不用那么麻烦了。在Groovy语言中,我们引入了参数的值的概念,使得我们完成上面的要求只需要一个方法就可以实现上面的多个方法。如下:

   

    def static add(i=0,j=1)

    {

       i+j

    }

 

 

有了上面的方法,我们就可以进行如下的调用

     

      println add()

     

      println add(1)

     

      println add(1,2)

 

 

一个方法调用没有输入任何参数,表示使用两个参数的认值;第二个方法调用只有一个输入参数,表示使用了参数"j"的认值;第三个方法调用有两个输入参数,则不适用任何一个参数的认值。

上面代码的运行结果为:

1

2

3

 

唯一有一点点遗憾就是没有实现参数"i"为认值,而参数"j"为非值的情况。

大佬总结

以上是大佬教程为你收集整理的Groovy Tip 32 方法的参数 一全部内容,希望文章能够帮你解决Groovy Tip 32 方法的参数 一所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。